diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java index 1c2148177d2..ce1ae36c3ed 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java @@ -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.JvmMethodParameterSignature; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; -import org.jetbrains.kotlin.serialization.ClassData; -import org.jetbrains.kotlin.serialization.DescriptorSerializer; -import org.jetbrains.kotlin.serialization.ProtoBuf; -import org.jetbrains.kotlin.serialization.StringTable; +import org.jetbrains.kotlin.serialization.*; import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.serialization.jvm.BitEncoding; import org.jetbrains.kotlin.types.JetType; @@ -253,7 +250,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { kind.toString() ); 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.visitEnd(); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java index c77078bb3dd..4047017504e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java @@ -49,10 +49,7 @@ import org.jetbrains.kotlin.resolve.MemberComparator; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.JetScope; -import org.jetbrains.kotlin.serialization.DescriptorSerializer; -import org.jetbrains.kotlin.serialization.PackageData; -import org.jetbrains.kotlin.serialization.ProtoBuf; -import org.jetbrains.kotlin.serialization.StringTable; +import org.jetbrains.kotlin.serialization.*; import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor; @@ -286,7 +283,7 @@ public class PackageCodegen { AnnotationVisitor av = v.newAnnotation(asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_PACKAGE), true); av.visit(JvmAnnotationNames.ABI_VERSION_FIELD_NAME, JvmAbi.VERSION); 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.visitEnd(); diff --git a/compiler/builtins-serializer/src/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/BuiltInsSerializer.kt index 6181ec25f36..8502bf230c4 100644 --- a/compiler/builtins-serializer/src/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/BuiltInsSerializer.kt @@ -40,8 +40,8 @@ import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.serialization.DescriptorSerializer -import org.jetbrains.kotlin.serialization.NameSerializationUtil import org.jetbrains.kotlin.serialization.ProtoBuf +import org.jetbrains.kotlin.serialization.SerializationUtil import org.jetbrains.kotlin.utils.recursePostOrder import java.io.ByteArrayOutputStream import java.io.File @@ -136,7 +136,7 @@ public class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) { val nameStream = ByteArrayOutputStream() val strings = serializer.getStringTable() - NameSerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames()) + SerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames()) write(destDir, BuiltInsSerializationUtil.getStringTableFilePath(fqName), nameStream) } diff --git a/core/serialization/src/org/jetbrains/kotlin/serialization/ClassData.java b/core/serialization/src/org/jetbrains/kotlin/serialization/ClassData.java index 2f75faefd43..4b1cb45d891 100644 --- a/core/serialization/src/org/jetbrains/kotlin/serialization/ClassData.java +++ b/core/serialization/src/org/jetbrains/kotlin/serialization/ClassData.java @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.utils.UtilsPackage; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; public final class ClassData { @@ -56,17 +55,4 @@ public final class ClassData { public ProtoBuf.Class getClassProto() { 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); - } - } } diff --git a/core/serialization/src/org/jetbrains/kotlin/serialization/PackageData.java b/core/serialization/src/org/jetbrains/kotlin/serialization/PackageData.java index fbceee39d3c..2d1cf45a97c 100644 --- a/core/serialization/src/org/jetbrains/kotlin/serialization/PackageData.java +++ b/core/serialization/src/org/jetbrains/kotlin/serialization/PackageData.java @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.utils.UtilsPackage; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; public final class PackageData { @@ -56,17 +55,4 @@ public final class PackageData { public ProtoBuf.Package getPackageProto() { 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); - } - } } diff --git a/core/serialization/src/org/jetbrains/kotlin/serialization/NameSerializationUtil.java b/core/serialization/src/org/jetbrains/kotlin/serialization/SerializationUtil.java similarity index 55% rename from core/serialization/src/org/jetbrains/kotlin/serialization/NameSerializationUtil.java rename to core/serialization/src/org/jetbrains/kotlin/serialization/SerializationUtil.java index ce8a02799ef..ec205daca12 100644 --- a/core/serialization/src/org/jetbrains/kotlin/serialization/NameSerializationUtil.java +++ b/core/serialization/src/org/jetbrains/kotlin/serialization/SerializationUtil.java @@ -20,14 +20,41 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.utils.UtilsPackage; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; -public class NameSerializationUtil { - private NameSerializationUtil() { +public class SerializationUtil { + 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()); } diff --git a/js/js.serializer/src/org/jetbrains/kotlin/utils/serializer/KotlinJavaScriptSerializer.kt b/js/js.serializer/src/org/jetbrains/kotlin/utils/serializer/KotlinJavaScriptSerializer.kt index a0559d633e7..45dc3f52da8 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/utils/serializer/KotlinJavaScriptSerializer.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/utils/serializer/KotlinJavaScriptSerializer.kt @@ -25,8 +25,8 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.classId import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.serialization.DescriptorSerializer -import org.jetbrains.kotlin.serialization.NameSerializationUtil import org.jetbrains.kotlin.serialization.ProtoBuf +import org.jetbrains.kotlin.serialization.SerializationUtil import org.jetbrains.kotlin.serialization.builtins.BuiltInsSerializerExtension import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils @@ -75,7 +75,7 @@ public class KotlinJavaScriptSerializer() { val nameStream = ByteArrayOutputStream() val strings = serializer.getStringTable() - NameSerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames()) + SerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames()) writeFun(BuiltInsSerializationUtil.getStringTableFilePath(fqName), nameStream) }