mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
use green stubs in java PSI to decrease the amount of AST being reloaded after GC
This commit is contained in:
@@ -20,7 +20,6 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.java.stubs.JavaStubElementTypes;
|
||||
import com.intellij.psi.impl.java.stubs.PsiClassStub;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.impl.source.tree.SharedImplUtil;
|
||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.reference.SoftReference;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -66,7 +65,7 @@ public class PsiAnonymousClassImpl extends PsiClassImpl implements PsiAnonymousC
|
||||
@Override
|
||||
@NotNull
|
||||
public PsiClassType getBaseClassType() {
|
||||
final PsiClassStub stub = getStub();
|
||||
final PsiClassStub stub = getGreenStub();
|
||||
if (stub == null) {
|
||||
myCachedBaseType = null;
|
||||
return getTypeByTree();
|
||||
@@ -192,7 +191,7 @@ public class PsiAnonymousClassImpl extends PsiClassImpl implements PsiAnonymousC
|
||||
|
||||
@Override
|
||||
public boolean isInQualifiedNew() {
|
||||
final PsiClassStub stub = getStub();
|
||||
final PsiClassStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isAnonymousInQualifiedNew();
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ public class PsiClassImpl extends JavaStubPsiElement<PsiClassStub<?>> implements
|
||||
@Override
|
||||
@Nullable
|
||||
public PsiClass getContainingClass() {
|
||||
final PsiClassStub stub = getStub();
|
||||
final PsiClassStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
StubElement parent = stub.getParentStub();
|
||||
return parent instanceof PsiClassStub ? ((PsiClassStub<?>)parent).getPsi() : null;
|
||||
@@ -540,7 +540,7 @@ public class PsiClassImpl extends JavaStubPsiElement<PsiClassStub<?>> implements
|
||||
private static boolean isAnonymousOrLocal(PsiClass aClass) {
|
||||
if (aClass instanceof PsiAnonymousClass) return true;
|
||||
|
||||
final PsiClassStub stub = ((PsiClassImpl)aClass).getStub();
|
||||
final PsiClassStub stub = ((PsiClassImpl)aClass).getGreenStub();
|
||||
if (stub != null) {
|
||||
final StubElement parentStub = stub.getParentStub();
|
||||
return !(parentStub instanceof PsiClassStub || parentStub instanceof PsiFileStub);
|
||||
|
||||
@@ -174,7 +174,7 @@ public class PsiEnumConstantImpl extends JavaStubPsiElement<PsiFieldStub> implem
|
||||
@Override
|
||||
@NotNull
|
||||
public String getName() {
|
||||
final PsiFieldStub stub = getStub();
|
||||
final PsiFieldStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getName();
|
||||
}
|
||||
@@ -194,7 +194,7 @@ public class PsiEnumConstantImpl extends JavaStubPsiElement<PsiFieldStub> implem
|
||||
|
||||
@Override
|
||||
public boolean isDeprecated() {
|
||||
final PsiFieldStub stub = getStub();
|
||||
final PsiFieldStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isDeprecated();
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ public class PsiFieldImpl extends JavaStubPsiElement<PsiFieldStub> implements Ps
|
||||
@Override
|
||||
@NotNull
|
||||
public String getName() {
|
||||
final PsiFieldStub stub = getStub();
|
||||
final PsiFieldStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getName();
|
||||
}
|
||||
@@ -185,7 +185,7 @@ public class PsiFieldImpl extends JavaStubPsiElement<PsiFieldStub> implements Ps
|
||||
private PsiField findFirstFieldInDeclaration() {
|
||||
if (getSelfModifierList() != null) return this;
|
||||
|
||||
final PsiFieldStub stub = getStub();
|
||||
final PsiFieldStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
final List siblings = stub.getParentStub().getChildrenStubs();
|
||||
final int idx = siblings.indexOf(stub);
|
||||
@@ -226,7 +226,7 @@ public class PsiFieldImpl extends JavaStubPsiElement<PsiFieldStub> implements Ps
|
||||
// avoids stub-to-AST switch if possible,
|
||||
// returns the light generated initializer literal expression if stored in stubs, the regular initializer if wasn't
|
||||
public PsiExpression getDetachedInitializer() {
|
||||
final PsiFieldStub stub = getStub();
|
||||
final PsiFieldStub stub = getGreenStub();
|
||||
PsiExpression initializer;
|
||||
if (stub == null) {
|
||||
initializer = getInitializer();
|
||||
@@ -251,7 +251,7 @@ public class PsiFieldImpl extends JavaStubPsiElement<PsiFieldStub> implements Ps
|
||||
|
||||
@Override
|
||||
public boolean hasInitializer() {
|
||||
PsiFieldStub stub = getStub();
|
||||
PsiFieldStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getInitializerText() != null;
|
||||
}
|
||||
@@ -299,7 +299,7 @@ public class PsiFieldImpl extends JavaStubPsiElement<PsiFieldStub> implements Ps
|
||||
|
||||
@Override
|
||||
public boolean isDeprecated() {
|
||||
final PsiFieldStub stub = getStub();
|
||||
final PsiFieldStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isDeprecated() || stub.hasDeprecatedAnnotation() && PsiImplUtil.isDeprecatedByAnnotation(this);
|
||||
}
|
||||
@@ -309,7 +309,7 @@ public class PsiFieldImpl extends JavaStubPsiElement<PsiFieldStub> implements Ps
|
||||
|
||||
@Override
|
||||
public PsiDocComment getDocComment(){
|
||||
final PsiFieldStub stub = getStub();
|
||||
final PsiFieldStub stub = getGreenStub();
|
||||
if (stub != null && !stub.hasDocComment()) return null;
|
||||
|
||||
CompositeElement treeElement = getNode();
|
||||
|
||||
@@ -40,7 +40,7 @@ public abstract class PsiImportStatementBaseImpl extends JavaStubPsiElement<PsiI
|
||||
|
||||
@Override
|
||||
public boolean isOnDemand(){
|
||||
final PsiImportStatementStub stub = getStub();
|
||||
final PsiImportStatementStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isOnDemand();
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public class PsiImportStatementImpl extends PsiImportStatementBaseImpl implement
|
||||
|
||||
@Override
|
||||
public String getQualifiedName() {
|
||||
PsiImportStatementStub stub = getStub();
|
||||
PsiImportStatementStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getImportReferenceText();
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ public class PsiJavaFileImpl extends PsiJavaFileBaseImpl {
|
||||
@Nullable
|
||||
@Override
|
||||
public PsiJavaModule getModuleDeclaration() {
|
||||
PsiJavaFileStub stub = (PsiJavaFileStub)getStub();
|
||||
PsiJavaFileStub stub = (PsiJavaFileStub)getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getModule();
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class PsiJavaModuleImpl extends JavaStubPsiElement<PsiJavaModuleStub> imp
|
||||
@NotNull
|
||||
@Override
|
||||
public String getModuleName() {
|
||||
PsiJavaModuleStub stub = getStub();
|
||||
PsiJavaModuleStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getName();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.navigation.ItemPresentation;
|
||||
import com.intellij.navigation.ItemPresentationProviders;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.ui.Queryable;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.ElementPresentationUtil;
|
||||
@@ -136,7 +137,7 @@ public class PsiMethodImpl extends JavaStubPsiElement<PsiMethodStub> implements
|
||||
@NotNull
|
||||
public String getName() {
|
||||
final String name;
|
||||
final PsiMethodStub stub = getStub();
|
||||
final PsiMethodStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
name = stub.getName();
|
||||
}
|
||||
@@ -241,7 +242,7 @@ public class PsiMethodImpl extends JavaStubPsiElement<PsiMethodStub> implements
|
||||
|
||||
@Override
|
||||
public boolean isDeprecated() {
|
||||
final PsiMethodStub stub = getStub();
|
||||
final PsiMethodStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isDeprecated() || stub.hasDeprecatedAnnotation() && PsiImplUtil.isDeprecatedByAnnotation(this);
|
||||
}
|
||||
@@ -251,7 +252,7 @@ public class PsiMethodImpl extends JavaStubPsiElement<PsiMethodStub> implements
|
||||
|
||||
@Override
|
||||
public PsiDocComment getDocComment() {
|
||||
final PsiMethodStub stub = getStub();
|
||||
final PsiMethodStub stub = getGreenStub();
|
||||
if (stub != null && !stub.hasDocComment()) return null;
|
||||
|
||||
return (PsiDocComment)getNode().findChildByRoleAsPsiElement(ChildRole.DOC_COMMENT);
|
||||
@@ -259,7 +260,7 @@ public class PsiMethodImpl extends JavaStubPsiElement<PsiMethodStub> implements
|
||||
|
||||
@Override
|
||||
public boolean isConstructor() {
|
||||
final PsiMethodStub stub = getStub();
|
||||
final PsiMethodStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isConstructor();
|
||||
}
|
||||
@@ -269,7 +270,7 @@ public class PsiMethodImpl extends JavaStubPsiElement<PsiMethodStub> implements
|
||||
|
||||
@Override
|
||||
public boolean isVarArgs() {
|
||||
final PsiMethodStub stub = getStub();
|
||||
final PsiMethodStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isVarArgs();
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ public class PsiParameterImpl extends JavaStubPsiElement<PsiParameterStub> imple
|
||||
@Override
|
||||
@NotNull
|
||||
public final String getName() {
|
||||
PsiParameterStub stub = getStub();
|
||||
PsiParameterStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getName();
|
||||
}
|
||||
@@ -269,7 +269,7 @@ public class PsiParameterImpl extends JavaStubPsiElement<PsiParameterStub> imple
|
||||
|
||||
@Override
|
||||
public boolean isVarArgs() {
|
||||
final PsiParameterStub stub = getStub();
|
||||
final PsiParameterStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.isParameterTypeEllipsis();
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ public class PsiParameterListImpl extends JavaStubPsiElement<PsiParameterListStu
|
||||
|
||||
@Override
|
||||
public int getParametersCount() {
|
||||
final PsiParameterListStub stub = getStub();
|
||||
final PsiParameterListStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getChildrenStubs().size();
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public class PsiReferenceListImpl extends JavaStubPsiElement<PsiClassReferenceLi
|
||||
@Override
|
||||
@NotNull
|
||||
public PsiClassType[] getReferencedTypes() {
|
||||
PsiClassReferenceListStub stub = getStub();
|
||||
PsiClassReferenceListStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
return stub.getReferencedTypes();
|
||||
}
|
||||
|
||||
+2
-2
@@ -98,7 +98,7 @@ public class PsiLiteralExpressionImpl
|
||||
}
|
||||
|
||||
public IElementType getLiteralElementType() {
|
||||
PsiLiteralStub stub = getStub();
|
||||
PsiLiteralStub stub = getGreenStub();
|
||||
if (stub != null) return stub.getLiteralType();
|
||||
|
||||
return getNode().getFirstChildNode().getElementType();
|
||||
@@ -111,7 +111,7 @@ public class PsiLiteralExpressionImpl
|
||||
|
||||
@Override
|
||||
public String getText() {
|
||||
PsiLiteralStub stub = getStub();
|
||||
PsiLiteralStub stub = getGreenStub();
|
||||
if (stub != null) return stub.getLiteralText();
|
||||
|
||||
return super.getText();
|
||||
|
||||
+1
-1
@@ -103,7 +103,7 @@ public class PsiNameValuePairImpl extends JavaStubPsiElement<PsiNameValuePairStu
|
||||
@Override
|
||||
@Nullable
|
||||
public PsiAnnotationMemberValue getDetachedValue() {
|
||||
PsiNameValuePairStub stub = getStub();
|
||||
PsiNameValuePairStub stub = getGreenStub();
|
||||
if (stub != null) {
|
||||
String text = stub.getValue();
|
||||
PsiAnnotationMemberValue result = SoftReference.dereference(myDetachedValue);
|
||||
|
||||
Reference in New Issue
Block a user