java stubs: save some memory by abandoning StringRef-s

This commit is contained in:
peter
2016-06-09 18:34:58 +02:00
parent 8f51b87597
commit beeb25ea8f
6 changed files with 22 additions and 37 deletions
@@ -174,14 +174,14 @@ public abstract class JavaClassElementType extends JavaStubElementType<PsiClassS
StringRef qname = dataStream.readName();
int languageLevelId = dataStream.readByte();
StringRef sourceFileName = dataStream.readName();
PsiClassStubImpl classStub = new PsiClassStubImpl(type, parentStub, qname, name, null, flags);
PsiClassStubImpl classStub = new PsiClassStubImpl(type, parentStub, StringRef.toString(qname), StringRef.toString(name), null, flags);
classStub.setLanguageLevel(LanguageLevel.values()[languageLevelId]);
classStub.setSourceFileName(sourceFileName);
return classStub;
}
else {
StringRef baseRef = dataStream.readName();
return new PsiClassStubImpl(type, parentStub, null, null, baseRef, flags);
return new PsiClassStubImpl(type, parentStub, null, null, StringRef.toString(baseRef), flags);
}
}
@@ -132,7 +132,7 @@ public abstract class JavaFieldStubElementType extends JavaStubElementType<PsiFi
TypeInfo type = TypeInfo.readTYPE(dataStream);
StringRef initializerText = dataStream.readName();
byte flags = dataStream.readByte();
return new PsiFieldStubImpl(parentStub, name, type, initializerText, flags);
return new PsiFieldStubImpl(parentStub, StringRef.toString(name), type, StringRef.toString(initializerText), flags);
}
@Override
@@ -82,7 +82,7 @@ public class JavaParameterElementType extends JavaStubElementType<PsiParameterSt
if (name == null) throw new IOException("corrupted indices");
TypeInfo type = TypeInfo.readTYPE(dataStream);
byte flags = dataStream.readByte();
return new PsiParameterStubImpl(parentStub, name, type, flags);
return new PsiParameterStubImpl(parentStub, name.toString(), type, flags);
}
@Override
@@ -31,9 +31,9 @@ import org.jetbrains.annotations.Nullable;
* @author max
*/
public class PsiClassStubImpl<T extends PsiClass> extends StubBase<T> implements PsiClassStub<T> {
private final StringRef myQualifiedName;
private final StringRef myName;
private final StringRef myBaseRefText;
private final String myQualifiedName;
private final String myName;
private final String myBaseRefText;
private final byte myFlags;
private static final int DEPRECATED = 0x01;
@@ -50,19 +50,10 @@ public class PsiClassStubImpl<T extends PsiClass> extends StubBase<T> implements
public PsiClassStubImpl(final JavaClassElementType type,
final StubElement parent,
final String qualifiedName,
final String name,
@Nullable final String qualifiedName,
@Nullable final String name,
@Nullable final String baseRefText,
final byte flags) {
this(type, parent, StringRef.fromString(qualifiedName), StringRef.fromString(name), StringRef.fromString(baseRefText), flags);
}
public PsiClassStubImpl(final JavaClassElementType type,
final StubElement parent,
final StringRef qualifiedName,
final StringRef name,
final StringRef baseRefText,
final byte flags) {
super(parent, type);
myQualifiedName = qualifiedName;
myName = name;
@@ -76,17 +67,17 @@ public class PsiClassStubImpl<T extends PsiClass> extends StubBase<T> implements
@Override
public String getName() {
return StringRef.toString(myName);
return myName;
}
@Override
public String getQualifiedName() {
return StringRef.toString(myQualifiedName);
return myQualifiedName;
}
@Override
public String getBaseClassReferenceText() {
return StringRef.toString(myBaseRefText);
return myBaseRefText;
}
@Override
@@ -22,7 +22,6 @@ import com.intellij.psi.impl.java.stubs.PsiFieldStub;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.BitUtil;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -35,16 +34,12 @@ public class PsiFieldStubImpl extends StubBase<PsiField> implements PsiFieldStub
private static final byte DEPRECATED_ANNOTATION = 0x04;
private static final byte HAS_DOC_COMMENT = 0x08;
private final StringRef myName;
private final String myName;
private final TypeInfo myType;
private final StringRef myInitializer;
private final String myInitializer;
private final byte myFlags;
public PsiFieldStubImpl(StubElement parent, String name, @NotNull TypeInfo type, @Nullable String initializer, byte flags) {
this(parent, StringRef.fromString(name), type, StringRef.fromString(initializer), flags);
}
public PsiFieldStubImpl(StubElement parent, StringRef name, @NotNull TypeInfo type, @Nullable StringRef initializer, byte flags) {
public PsiFieldStubImpl(StubElement parent, @Nullable String name, @NotNull TypeInfo type, @Nullable String initializer, byte flags) {
super(parent, isEnumConst(flags) ? JavaStubElementTypes.ENUM_CONSTANT : JavaStubElementTypes.FIELD);
myName = name;
myType = type;
@@ -64,7 +59,7 @@ public class PsiFieldStubImpl extends StubBase<PsiField> implements PsiFieldStub
@Override
public String getInitializerText() {
return StringRef.toString(myInitializer);
return myInitializer;
}
@Override
@@ -93,7 +88,7 @@ public class PsiFieldStubImpl extends StubBase<PsiField> implements PsiFieldStub
@Override
public String getName() {
return StringRef.toString(myName);
return myName;
}
public static byte packFlags(boolean isEnumConst, boolean isDeprecated, boolean hasDeprecatedAnnotation, boolean hasDocComment) {
@@ -23,7 +23,6 @@ import com.intellij.psi.impl.java.stubs.PsiParameterStub;
import com.intellij.psi.stubs.StubBase;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.BitUtil;
import com.intellij.util.io.StringRef;
import org.jetbrains.annotations.NotNull;
/**
@@ -40,15 +39,15 @@ public class PsiParameterStubImpl extends StubBase<PsiParameter> implements PsiP
return flags;
}
private StringRef myName;
private String myName;
private final TypeInfo myType;
private byte myFlags;
public PsiParameterStubImpl(StubElement parent, @NotNull String name, @NotNull TypeInfo type, boolean ellipsis, boolean generatedName) {
this(parent, StringRef.fromString(name), type, packFlags(ellipsis, generatedName));
this(parent, name, type, packFlags(ellipsis, generatedName));
}
public PsiParameterStubImpl(StubElement parent, @NotNull StringRef name, @NotNull TypeInfo type, byte flags) {
public PsiParameterStubImpl(StubElement parent, @NotNull String name, @NotNull TypeInfo type, byte flags) {
super(parent, JavaStubElementTypes.PARAMETER);
myName = name;
myType = type;
@@ -79,11 +78,11 @@ public class PsiParameterStubImpl extends StubBase<PsiParameter> implements PsiP
@NotNull
@Override
public String getName() {
return StringRef.toString(myName);
return myName;
}
public void setName(String name) {
myName = StringRef.fromString(name);
myName = name;
myFlags = BitUtil.set(myFlags, GENERATED_NAME, false);
}