Rename NameTable -> StringTable in serialization
Since almost the beginning, it was also used to store arbitrary strings, not just names
This commit is contained in:
@@ -237,7 +237,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
|
||||
ProtoBuf.Class classProto = serializer.classProto(descriptor).build();
|
||||
|
||||
ClassData data = new ClassData(createNameResolver(serializer.getNameTable()), classProto);
|
||||
ClassData data = new ClassData(createNameResolver(serializer.getStringTable()), classProto);
|
||||
|
||||
AnnotationVisitor av = v.getVisitor().visitAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_CLASS), true);
|
||||
//noinspection ConstantConditions
|
||||
|
||||
@@ -19,8 +19,6 @@ package org.jetbrains.jet.codegen;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.org.objectweb.asm.Type;
|
||||
import org.jetbrains.org.objectweb.asm.commons.Method;
|
||||
import org.jetbrains.jet.descriptors.serialization.*;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPropertyDescriptor;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedSimpleFunctionDescriptor;
|
||||
@@ -28,6 +26,8 @@ import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.SignatureDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.org.objectweb.asm.Type;
|
||||
import org.jetbrains.org.objectweb.asm.commons.Method;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -44,17 +44,17 @@ public class JavaSerializerExtension extends SerializerExtension {
|
||||
public void serializeCallable(
|
||||
@NotNull CallableMemberDescriptor callable,
|
||||
@NotNull ProtoBuf.Callable.Builder proto,
|
||||
@NotNull NameTable nameTable
|
||||
@NotNull StringTable stringTable
|
||||
) {
|
||||
saveSignature(callable, proto, nameTable);
|
||||
saveImplClassName(callable, proto, nameTable);
|
||||
saveSignature(callable, proto, stringTable);
|
||||
saveImplClassName(callable, proto, stringTable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serializeValueParameter(
|
||||
@NotNull ValueParameterDescriptor descriptor,
|
||||
@NotNull ProtoBuf.Callable.ValueParameter.Builder proto,
|
||||
@NotNull NameTable nameTable
|
||||
@NotNull StringTable stringTable
|
||||
) {
|
||||
Integer index = bindings.get(INDEX_FOR_VALUE_PARAMETER, descriptor);
|
||||
if (index != null) {
|
||||
@@ -65,9 +65,9 @@ public class JavaSerializerExtension extends SerializerExtension {
|
||||
private void saveSignature(
|
||||
@NotNull CallableMemberDescriptor callable,
|
||||
@NotNull ProtoBuf.Callable.Builder proto,
|
||||
@NotNull NameTable nameTable
|
||||
@NotNull StringTable stringTable
|
||||
) {
|
||||
SignatureSerializer signatureSerializer = new SignatureSerializer(nameTable);
|
||||
SignatureSerializer signatureSerializer = new SignatureSerializer(stringTable);
|
||||
if (callable instanceof FunctionDescriptor) {
|
||||
JavaProtoBuf.JavaMethodSignature signature;
|
||||
if (callable instanceof DeserializedSimpleFunctionDescriptor) {
|
||||
@@ -128,19 +128,19 @@ public class JavaSerializerExtension extends SerializerExtension {
|
||||
private void saveImplClassName(
|
||||
@NotNull CallableMemberDescriptor callable,
|
||||
@NotNull ProtoBuf.Callable.Builder proto,
|
||||
@NotNull NameTable nameTable
|
||||
@NotNull StringTable stringTable
|
||||
) {
|
||||
String name = bindings.get(IMPL_CLASS_NAME_FOR_CALLABLE, callable);
|
||||
if (name != null) {
|
||||
proto.setExtension(JavaProtoBuf.implClassName, nameTable.getSimpleNameIndex(Name.identifier(name)));
|
||||
proto.setExtension(JavaProtoBuf.implClassName, stringTable.getSimpleNameIndex(Name.identifier(name)));
|
||||
}
|
||||
}
|
||||
|
||||
private static class SignatureSerializer {
|
||||
private final NameTable nameTable;
|
||||
private final StringTable stringTable;
|
||||
|
||||
public SignatureSerializer(@NotNull NameTable nameTable) {
|
||||
this.nameTable = nameTable;
|
||||
public SignatureSerializer(@NotNull StringTable stringTable) {
|
||||
this.stringTable = stringTable;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -156,7 +156,7 @@ public class JavaSerializerExtension extends SerializerExtension {
|
||||
public JavaProtoBuf.JavaMethodSignature methodSignature(@NotNull Method method) {
|
||||
JavaProtoBuf.JavaMethodSignature.Builder signature = JavaProtoBuf.JavaMethodSignature.newBuilder();
|
||||
|
||||
signature.setName(nameTable.getSimpleNameIndex(Name.guess(method.getName())));
|
||||
signature.setName(stringTable.getStringIndex(method.getName()));
|
||||
|
||||
signature.setReturnType(type(method.getReturnType()));
|
||||
|
||||
@@ -231,7 +231,7 @@ public class JavaSerializerExtension extends SerializerExtension {
|
||||
@NotNull
|
||||
public JavaProtoBuf.JavaFieldSignature fieldSignature(@NotNull Type type, @NotNull String name, boolean isStaticInOuter) {
|
||||
JavaProtoBuf.JavaFieldSignature.Builder signature = JavaProtoBuf.JavaFieldSignature.newBuilder();
|
||||
signature.setName(nameTable.getSimpleNameIndex(Name.guess(name)));
|
||||
signature.setName(stringTable.getStringIndex(name));
|
||||
signature.setType(type(type));
|
||||
if (isStaticInOuter) {
|
||||
signature.setIsStaticInOuter(true);
|
||||
@@ -255,7 +255,7 @@ public class JavaSerializerExtension extends SerializerExtension {
|
||||
|
||||
if (type.getSort() == Type.OBJECT) {
|
||||
FqName fqName = internalNameToFqName(type.getInternalName());
|
||||
builder.setClassFqName(nameTable.getFqNameIndex(fqName));
|
||||
builder.setClassFqName(stringTable.getFqNameIndex(fqName));
|
||||
}
|
||||
else {
|
||||
builder.setPrimitiveType(JavaProtoBuf.JavaType.PrimitiveType.valueOf(type.getSort()));
|
||||
|
||||
@@ -280,7 +280,7 @@ public class PackageCodegen {
|
||||
|
||||
if (packageProto.getMemberCount() == 0) return;
|
||||
|
||||
PackageData data = new PackageData(createNameResolver(serializer.getNameTable()), packageProto);
|
||||
PackageData data = new PackageData(createNameResolver(serializer.getStringTable()), packageProto);
|
||||
|
||||
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_PACKAGE), true);
|
||||
av.visit(JvmAnnotationNames.ABI_VERSION_FIELD_NAME, JvmAbi.VERSION);
|
||||
|
||||
@@ -135,12 +135,12 @@ public class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) {
|
||||
write(destDir, BuiltInsSerializationUtil.getPackageFilePath(fqName), packageStream)
|
||||
|
||||
val nameStream = ByteArrayOutputStream()
|
||||
NameSerializationUtil.serializeNameTable(nameStream, serializer.getNameTable())
|
||||
write(destDir, BuiltInsSerializationUtil.getNameTableFilePath(fqName), nameStream)
|
||||
NameSerializationUtil.serializeStringTable(nameStream, serializer.getStringTable())
|
||||
write(destDir, BuiltInsSerializationUtil.getStringTableFilePath(fqName).first(), nameStream)
|
||||
}
|
||||
|
||||
fun writeClassNames(serializer: DescriptorSerializer, classNames: List<Name>, stream: ByteArrayOutputStream) {
|
||||
val nameTable = serializer.getNameTable()
|
||||
val nameTable = serializer.getStringTable()
|
||||
DataOutputStream(stream) use { output ->
|
||||
output.writeInt(classNames.size())
|
||||
for (className in classNames) {
|
||||
|
||||
@@ -22,7 +22,7 @@ import kotlin.platform.platformStatic
|
||||
public object BuiltInsSerializationUtil {
|
||||
private val CLASS_METADATA_FILE_EXTENSION = "kotlin_class"
|
||||
private val PACKAGE_FILE_NAME = ".kotlin_package"
|
||||
private val NAME_TABLE_FILE_NAME = ".kotlin_name_table"
|
||||
private val STRING_TABLE_FILE_NAME = ".kotlin_string_table"
|
||||
private val CLASS_NAMES_FILE_NAME = ".kotlin_class_names"
|
||||
private val CLASS_OBJECT_NAME = "object"
|
||||
|
||||
@@ -45,8 +45,11 @@ public object BuiltInsSerializationUtil {
|
||||
platformStatic public fun getPackageFilePath(fqName: FqName): String =
|
||||
packageFqNameToPath(fqName) + "/" + PACKAGE_FILE_NAME
|
||||
|
||||
platformStatic public fun getNameTableFilePath(fqName: FqName): String =
|
||||
packageFqNameToPath(fqName) + "/" + NAME_TABLE_FILE_NAME
|
||||
platformStatic public fun getStringTableFilePath(fqName: FqName): List<String> =
|
||||
listOf(
|
||||
packageFqNameToPath(fqName) + "/" + STRING_TABLE_FILE_NAME,
|
||||
packageFqNameToPath(fqName) + "/.kotlin_name_table" // TODO: drop
|
||||
)
|
||||
|
||||
platformStatic public fun getClassNamesFilePath(fqName: FqName): String =
|
||||
packageFqNameToPath(fqName) + "/" + CLASS_NAMES_FILE_NAME
|
||||
|
||||
@@ -37,7 +37,9 @@ public class BuiltinsPackageFragment(
|
||||
private val loadResource: (path: String) -> InputStream?
|
||||
) : PackageFragmentDescriptorImpl(module, fqName) {
|
||||
|
||||
private val nameResolver = NameSerializationUtil.deserializeNameResolver(getStream(BuiltInsSerializationUtil.getNameTableFilePath(fqName)))
|
||||
private val nameResolver = BuiltInsSerializationUtil.getStringTableFilePath(fqName).let { paths ->
|
||||
NameSerializationUtil.deserializeNameResolver(loadResource(paths[0]) ?: getStream(paths[1]))
|
||||
}
|
||||
|
||||
public val provider: PackageFragmentProvider = PackageFragmentProviderImpl(listOf(this))
|
||||
|
||||
|
||||
+15
-15
@@ -33,19 +33,19 @@ import static org.jetbrains.jet.lang.resolve.DescriptorUtils.*;
|
||||
|
||||
public class DescriptorSerializer {
|
||||
|
||||
private final NameTable nameTable;
|
||||
private final StringTable stringTable;
|
||||
private final Interner<TypeParameterDescriptor> typeParameters;
|
||||
private final SerializerExtension extension;
|
||||
|
||||
private DescriptorSerializer(NameTable nameTable, Interner<TypeParameterDescriptor> typeParameters, SerializerExtension extension) {
|
||||
this.nameTable = nameTable;
|
||||
private DescriptorSerializer(StringTable stringTable, Interner<TypeParameterDescriptor> typeParameters, SerializerExtension extension) {
|
||||
this.stringTable = stringTable;
|
||||
this.typeParameters = typeParameters;
|
||||
this.extension = extension;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static DescriptorSerializer createTopLevel(@NotNull SerializerExtension extension) {
|
||||
return new DescriptorSerializer(new NameTable(), new Interner<TypeParameterDescriptor>(), extension);
|
||||
return new DescriptorSerializer(new StringTable(), new Interner<TypeParameterDescriptor>(), extension);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -67,12 +67,12 @@ public class DescriptorSerializer {
|
||||
}
|
||||
|
||||
private DescriptorSerializer createChildSerializer() {
|
||||
return new DescriptorSerializer(nameTable, new Interner<TypeParameterDescriptor>(typeParameters), extension);
|
||||
return new DescriptorSerializer(stringTable, new Interner<TypeParameterDescriptor>(typeParameters), extension);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public NameTable getNameTable() {
|
||||
return nameTable;
|
||||
public StringTable getStringTable() {
|
||||
return stringTable;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -121,7 +121,7 @@ public class DescriptorSerializer {
|
||||
}
|
||||
|
||||
for (DeclarationDescriptor descriptor : sort(classDescriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors())) {
|
||||
int name = nameTable.getSimpleNameIndex(descriptor.getName());
|
||||
int name = stringTable.getSimpleNameIndex(descriptor.getName());
|
||||
if (isEnumEntry(descriptor)) {
|
||||
builder.addEnumEntry(name);
|
||||
}
|
||||
@@ -214,7 +214,7 @@ public class DescriptorSerializer {
|
||||
builder.setReceiverType(local.type(receiverParameter.getType()));
|
||||
}
|
||||
|
||||
builder.setName(nameTable.getSimpleNameIndex(descriptor.getName()));
|
||||
builder.setName(stringTable.getSimpleNameIndex(descriptor.getName()));
|
||||
|
||||
for (ValueParameterDescriptor valueParameterDescriptor : descriptor.getValueParameters()) {
|
||||
builder.addValueParameter(local.valueParameter(valueParameterDescriptor));
|
||||
@@ -222,7 +222,7 @@ public class DescriptorSerializer {
|
||||
|
||||
builder.setReturnType(local.type(getSerializableReturnType(descriptor.getReturnType())));
|
||||
|
||||
extension.serializeCallable(descriptor, builder, nameTable);
|
||||
extension.serializeCallable(descriptor, builder, stringTable);
|
||||
|
||||
return builder;
|
||||
}
|
||||
@@ -283,7 +283,7 @@ public class DescriptorSerializer {
|
||||
|
||||
builder.setFlags(Flags.getValueParameterFlags(hasAnnotations(descriptor), descriptor.declaresDefaultValue()));
|
||||
|
||||
builder.setName(nameTable.getSimpleNameIndex(descriptor.getName()));
|
||||
builder.setName(stringTable.getSimpleNameIndex(descriptor.getName()));
|
||||
|
||||
builder.setType(type(descriptor.getType()));
|
||||
|
||||
@@ -292,7 +292,7 @@ public class DescriptorSerializer {
|
||||
builder.setVarargElementType(type(varargElementType));
|
||||
}
|
||||
|
||||
extension.serializeValueParameter(descriptor, builder, nameTable);
|
||||
extension.serializeValueParameter(descriptor, builder, stringTable);
|
||||
|
||||
return builder;
|
||||
}
|
||||
@@ -302,7 +302,7 @@ public class DescriptorSerializer {
|
||||
|
||||
builder.setId(getTypeParameterId(typeParameter));
|
||||
|
||||
builder.setName(nameTable.getSimpleNameIndex(typeParameter.getName()));
|
||||
builder.setName(stringTable.getSimpleNameIndex(typeParameter.getName()));
|
||||
|
||||
// to avoid storing a default
|
||||
if (typeParameter.isReified()) {
|
||||
@@ -361,7 +361,7 @@ public class DescriptorSerializer {
|
||||
|
||||
ProtoBuf.Type.Builder builder = type(flexibility.getLowerBound());
|
||||
|
||||
builder.setFlexibleTypeCapabilitiesId(nameTable.getStringIndex(flexibility.getExtraCapabilities().getId()));
|
||||
builder.setFlexibleTypeCapabilitiesId(stringTable.getStringIndex(flexibility.getExtraCapabilities().getId()));
|
||||
|
||||
builder.setFlexibleUpperBound(type(flexibility.getUpperBound()));
|
||||
|
||||
@@ -435,7 +435,7 @@ public class DescriptorSerializer {
|
||||
}
|
||||
|
||||
private int getClassId(@NotNull ClassDescriptor descriptor) {
|
||||
return nameTable.getFqNameIndex(descriptor);
|
||||
return stringTable.getFqNameIndex(descriptor);
|
||||
}
|
||||
|
||||
private int getTypeParameterId(@NotNull TypeParameterDescriptor descriptor) {
|
||||
|
||||
+9
-9
@@ -40,14 +40,14 @@ public class NameSerializationUtil {
|
||||
}
|
||||
|
||||
public static void serializeNameResolver(@NotNull OutputStream out, @NotNull NameResolver nameResolver) {
|
||||
serializeNameTable(out, nameResolver.getStringTable(), nameResolver.getQualifiedNameTable());
|
||||
serializeStringTable(out, nameResolver.getStringTable(), nameResolver.getQualifiedNameTable());
|
||||
}
|
||||
|
||||
public static void serializeNameTable(@NotNull OutputStream out, @NotNull NameTable nameTable) {
|
||||
serializeNameTable(out, toStringTable(nameTable), toQualifiedNameTable(nameTable));
|
||||
public static void serializeStringTable(@NotNull OutputStream out, @NotNull StringTable stringTable) {
|
||||
serializeStringTable(out, toStringTable(stringTable), toQualifiedNameTable(stringTable));
|
||||
}
|
||||
|
||||
private static void serializeNameTable(
|
||||
private static void serializeStringTable(
|
||||
@NotNull OutputStream out,
|
||||
@NotNull ProtoBuf.StringTable stringTable,
|
||||
@NotNull ProtoBuf.QualifiedNameTable qualifiedNameTable
|
||||
@@ -62,25 +62,25 @@ public class NameSerializationUtil {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static ProtoBuf.StringTable toStringTable(@NotNull NameTable nameTable) {
|
||||
public static ProtoBuf.StringTable toStringTable(@NotNull StringTable stringTable) {
|
||||
ProtoBuf.StringTable.Builder simpleNames = ProtoBuf.StringTable.newBuilder();
|
||||
for (String simpleName : nameTable.getStrings()) {
|
||||
for (String simpleName : stringTable.getStrings()) {
|
||||
simpleNames.addString(simpleName);
|
||||
}
|
||||
return simpleNames.build();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static ProtoBuf.QualifiedNameTable toQualifiedNameTable(@NotNull NameTable nameTable) {
|
||||
public static ProtoBuf.QualifiedNameTable toQualifiedNameTable(@NotNull StringTable stringTable) {
|
||||
ProtoBuf.QualifiedNameTable.Builder qualifiedNames = ProtoBuf.QualifiedNameTable.newBuilder();
|
||||
for (ProtoBuf.QualifiedNameTable.QualifiedName.Builder qName : nameTable.getFqNames()) {
|
||||
for (ProtoBuf.QualifiedNameTable.QualifiedName.Builder qName : stringTable.getFqNames()) {
|
||||
qualifiedNames.addQualifiedName(qName);
|
||||
}
|
||||
return qualifiedNames.build();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static NameResolver createNameResolver(@NotNull NameTable table) {
|
||||
public static NameResolver createNameResolver(@NotNull StringTable table) {
|
||||
return new NameResolver(toStringTable(table), toQualifiedNameTable(table));
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -26,14 +26,14 @@ public abstract class SerializerExtension {
|
||||
public void serializeCallable(
|
||||
@NotNull CallableMemberDescriptor callable,
|
||||
@NotNull ProtoBuf.Callable.Builder proto,
|
||||
@NotNull NameTable nameTable
|
||||
@NotNull StringTable stringTable
|
||||
) {
|
||||
}
|
||||
|
||||
public void serializeValueParameter(
|
||||
@NotNull ValueParameterDescriptor descriptor,
|
||||
@NotNull ProtoBuf.Callable.ValueParameter.Builder proto,
|
||||
@NotNull NameTable nameTable
|
||||
@NotNull StringTable stringTable
|
||||
) {
|
||||
}
|
||||
}
|
||||
|
||||
+1
-4
@@ -26,7 +26,7 @@ import java.util.List;
|
||||
|
||||
import static org.jetbrains.jet.descriptors.serialization.ProtoBuf.QualifiedNameTable.QualifiedName;
|
||||
|
||||
public class NameTable {
|
||||
public class StringTable {
|
||||
public static final TObjectHashingStrategy<QualifiedName.Builder> QUALIFIED_NAME_BUILDER_HASHING =
|
||||
new TObjectHashingStrategy<ProtoBuf.QualifiedNameTable.QualifiedName.Builder>() {
|
||||
@Override
|
||||
@@ -49,9 +49,6 @@ public class NameTable {
|
||||
private final Interner<String> strings = new Interner<String>();
|
||||
private final Interner<QualifiedName.Builder> qualifiedNames = new Interner<QualifiedName.Builder>(QUALIFIED_NAME_BUILDER_HASHING);
|
||||
|
||||
public NameTable() {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<String> getStrings() {
|
||||
return strings.getAllInternedObjects();
|
||||
Reference in New Issue
Block a user