Rename NameSerializationUtil, move serialization-related code there

This commit is contained in:
Alexander Udalov
2015-03-27 03:25:04 +03:00
parent 085bc2197b
commit d09e0e73fa
7 changed files with 38 additions and 45 deletions
@@ -59,10 +59,7 @@ import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmClassSignature;
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterKind; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterKind;
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterSignature; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterSignature;
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature;
import org.jetbrains.kotlin.serialization.ClassData; import org.jetbrains.kotlin.serialization.*;
import org.jetbrains.kotlin.serialization.DescriptorSerializer;
import org.jetbrains.kotlin.serialization.ProtoBuf;
import org.jetbrains.kotlin.serialization.StringTable;
import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
import org.jetbrains.kotlin.serialization.jvm.BitEncoding; import org.jetbrains.kotlin.serialization.jvm.BitEncoding;
import org.jetbrains.kotlin.types.JetType; import org.jetbrains.kotlin.types.JetType;
@@ -253,7 +250,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
kind.toString() kind.toString()
); );
AnnotationVisitor array = av.visitArray(JvmAnnotationNames.DATA_FIELD_NAME); AnnotationVisitor array = av.visitArray(JvmAnnotationNames.DATA_FIELD_NAME);
for (String string : BitEncoding.encodeBytes(data.toBytes())) { for (String string : BitEncoding.encodeBytes(SerializationUtil.serializeClassData(data))) {
array.visit(null, string); array.visit(null, string);
} }
array.visitEnd(); array.visitEnd();
@@ -49,10 +49,7 @@ import org.jetbrains.kotlin.resolve.MemberComparator;
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature;
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.JetScope;
import org.jetbrains.kotlin.serialization.DescriptorSerializer; import org.jetbrains.kotlin.serialization.*;
import org.jetbrains.kotlin.serialization.PackageData;
import org.jetbrains.kotlin.serialization.ProtoBuf;
import org.jetbrains.kotlin.serialization.StringTable;
import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor;
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor;
@@ -286,7 +283,7 @@ public class PackageCodegen {
AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_PACKAGE), true); AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_PACKAGE), true);
av.visit(JvmAnnotationNames.ABI_VERSION_FIELD_NAME, JvmAbi.VERSION); av.visit(JvmAnnotationNames.ABI_VERSION_FIELD_NAME, JvmAbi.VERSION);
AnnotationVisitor array = av.visitArray(JvmAnnotationNames.DATA_FIELD_NAME); AnnotationVisitor array = av.visitArray(JvmAnnotationNames.DATA_FIELD_NAME);
for (String string : BitEncoding.encodeBytes(data.toBytes())) { for (String string : BitEncoding.encodeBytes(SerializationUtil.serializePackageData(data))) {
array.visit(null, string); array.visit(null, string);
} }
array.visitEnd(); array.visitEnd();
@@ -40,8 +40,8 @@ import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.serialization.DescriptorSerializer import org.jetbrains.kotlin.serialization.DescriptorSerializer
import org.jetbrains.kotlin.serialization.NameSerializationUtil
import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.SerializationUtil
import org.jetbrains.kotlin.utils.recursePostOrder import org.jetbrains.kotlin.utils.recursePostOrder
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.File import java.io.File
@@ -136,7 +136,7 @@ public class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) {
val nameStream = ByteArrayOutputStream() val nameStream = ByteArrayOutputStream()
val strings = serializer.getStringTable() val strings = serializer.getStringTable()
NameSerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames()) SerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames())
write(destDir, BuiltInsSerializationUtil.getStringTableFilePath(fqName), nameStream) write(destDir, BuiltInsSerializationUtil.getStringTableFilePath(fqName), nameStream)
} }
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
import org.jetbrains.kotlin.utils.UtilsPackage; import org.jetbrains.kotlin.utils.UtilsPackage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
public final class ClassData { public final class ClassData {
@@ -56,17 +55,4 @@ public final class ClassData {
public ProtoBuf.Class getClassProto() { public ProtoBuf.Class getClassProto() {
return classProto; return classProto;
} }
@NotNull
public byte[] toBytes() {
try {
ByteArrayOutputStream result = new ByteArrayOutputStream();
NameSerializationUtil.serializeNameResolver(result, nameResolver);
classProto.writeTo(result);
return result.toByteArray();
}
catch (IOException e) {
throw UtilsPackage.rethrow(e);
}
}
} }
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
import org.jetbrains.kotlin.utils.UtilsPackage; import org.jetbrains.kotlin.utils.UtilsPackage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
public final class PackageData { public final class PackageData {
@@ -56,17 +55,4 @@ public final class PackageData {
public ProtoBuf.Package getPackageProto() { public ProtoBuf.Package getPackageProto() {
return packageProto; return packageProto;
} }
@NotNull
public byte[] toBytes() {
try {
ByteArrayOutputStream result = new ByteArrayOutputStream();
NameSerializationUtil.serializeNameResolver(result, nameResolver);
packageProto.writeTo(result);
return result.toByteArray();
}
catch (IOException e) {
throw UtilsPackage.rethrow(e);
}
}
} }
@@ -20,14 +20,41 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
import org.jetbrains.kotlin.utils.UtilsPackage; import org.jetbrains.kotlin.utils.UtilsPackage;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
public class NameSerializationUtil { public class SerializationUtil {
private NameSerializationUtil() { private SerializationUtil() {
} }
public static void serializeNameResolver(@NotNull OutputStream out, @NotNull NameResolver nameResolver) { @NotNull
public static byte[] serializeClassData(@NotNull ClassData classData) {
try {
ByteArrayOutputStream result = new ByteArrayOutputStream();
serializeNameResolver(result, classData.getNameResolver());
classData.getClassProto().writeTo(result);
return result.toByteArray();
}
catch (IOException e) {
throw UtilsPackage.rethrow(e);
}
}
@NotNull
public static byte[] serializePackageData(@NotNull PackageData packageData) {
try {
ByteArrayOutputStream result = new ByteArrayOutputStream();
serializeNameResolver(result, packageData.getNameResolver());
packageData.getPackageProto().writeTo(result);
return result.toByteArray();
}
catch (IOException e) {
throw UtilsPackage.rethrow(e);
}
}
private static void serializeNameResolver(@NotNull OutputStream out, @NotNull NameResolver nameResolver) {
serializeStringTable(out, nameResolver.getStringTable(), nameResolver.getQualifiedNameTable()); serializeStringTable(out, nameResolver.getStringTable(), nameResolver.getQualifiedNameTable());
} }
@@ -25,8 +25,8 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.classId import org.jetbrains.kotlin.resolve.descriptorUtil.classId
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.serialization.DescriptorSerializer import org.jetbrains.kotlin.serialization.DescriptorSerializer
import org.jetbrains.kotlin.serialization.NameSerializationUtil
import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.SerializationUtil
import org.jetbrains.kotlin.serialization.builtins.BuiltInsSerializerExtension import org.jetbrains.kotlin.serialization.builtins.BuiltInsSerializerExtension
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
@@ -75,7 +75,7 @@ public class KotlinJavaScriptSerializer() {
val nameStream = ByteArrayOutputStream() val nameStream = ByteArrayOutputStream()
val strings = serializer.getStringTable() val strings = serializer.getStringTable()
NameSerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames()) SerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames())
writeFun(BuiltInsSerializationUtil.getStringTableFilePath(fqName), nameStream) writeFun(BuiltInsSerializationUtil.getStringTableFilePath(fqName), nameStream)
} }