diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt index c96053d3e47..cc92c7d59d0 100644 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensionsImpl.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.backend.jvm import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor import org.jetbrains.kotlin.backend.common.ir.createParameterDeclarations -import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer +import org.jetbrains.kotlin.backend.common.serialization.signature.PublicIdSignatureComputer import org.jetbrains.kotlin.backend.jvm.lower.SingletonObjectJvmStaticTransformer import org.jetbrains.kotlin.backend.jvm.serialization.deserializeClassFromByteArray import org.jetbrains.kotlin.backend.jvm.serialization.deserializeIrFileFromByteArray @@ -211,7 +211,7 @@ open class JvmGeneratorExtensionsImpl( } override fun registerDeclarations(symbolTable: SymbolTable) { - val signatureComputer = IdSignatureSerializer(JvmIrMangler) + val signatureComputer = PublicIdSignatureComputer(JvmIrMangler) specialAnnotationConstructors.forEach { constructor -> symbolTable.declareConstructorWithSignature(signatureComputer.composePublicIdSignature(constructor), constructor.symbol) } diff --git a/compiler/ir/serialization.jvm/src/JvmIr.proto b/compiler/ir/serialization.jvm/src/JvmIr.proto index 274adfac9f7..4c8a39a696e 100644 --- a/compiler/ir/serialization.jvm/src/JvmIr.proto +++ b/compiler/ir/serialization.jvm/src/JvmIr.proto @@ -15,6 +15,7 @@ message XStatementOrExpression { } message AuxTables { + // TODO: optimize the representation. repeated bytes type = 1; repeated bytes signature = 2; repeated bytes string = 3; diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmGlobalDeclarationTable.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmGlobalDeclarationTable.kt index 2297a22ee89..fb3a7ddc62c 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmGlobalDeclarationTable.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmGlobalDeclarationTable.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.backend.jvm.serialization import org.jetbrains.kotlin.backend.common.serialization.GlobalDeclarationTable -import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler -class JvmGlobalDeclarationTable : GlobalDeclarationTable(IdSignatureSerializer(JvmIrMangler), JvmIrMangler) \ No newline at end of file +class JvmGlobalDeclarationTable : GlobalDeclarationTable(JvmIrMangler) \ No newline at end of file diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializerSession.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializerSession.kt index 4090e8b2c80..0f47f13f8d9 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializerSession.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializerSession.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.util.IrMessageLogger -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.protobuf.ByteString class JvmIrSerializerSession( diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt index 54ab9daf68b..84e729eb382 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt @@ -9,25 +9,20 @@ import org.jetbrains.kotlin.backend.common.overrides.DefaultFakeOverrideClassFil import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideDeclarationTable import org.jetbrains.kotlin.backend.common.overrides.FileLocalAwareLinker -import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinder -import org.jetbrains.kotlin.backend.common.serialization.IrDeclarationDeserializer -import org.jetbrains.kotlin.backend.common.serialization.IrLibraryFile -import org.jetbrains.kotlin.backend.common.serialization.IrSymbolDeserializer +import org.jetbrains.kotlin.backend.common.serialization.* import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData -import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer import org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl import org.jetbrains.kotlin.ir.declarations.lazy.LazyIrFactory import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.symbols.* -import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator -import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator -import org.jetbrains.kotlin.ir.util.IdSignature -import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.protobuf.ByteString @@ -53,9 +48,14 @@ fun deserializeClassFromByteArray( JvmDescriptorMangler(null), DescriptorByIdSignatureFinder.LookupMode.MODULE_WITH_DEPENDENCIES ) + + // Only needed for local signature computation. + val dummyIrFile = IrFileImpl(NaiveSourceBasedFileEntryImpl(""), IrFileSymbolImpl(), irClass.packageFqName!!) + val symbolDeserializer = IrSymbolDeserializer( symbolTable, irLibraryFile, + fileSymbol = dummyIrFile.symbol, /* TODO */ actuals = emptyList(), enqueueLocalTopLevelDeclaration = {}, // just link to it in symbolTable handleExpectActualMapping = { _, _ -> TODO() }, @@ -103,9 +103,14 @@ fun deserializeIrFileFromByteArray( JvmDescriptorMangler(null), DescriptorByIdSignatureFinder.LookupMode.MODULE_WITH_DEPENDENCIES ) + + // Only needed for local signature computation. + val dummyIrFile = IrFileImpl(NaiveSourceBasedFileEntryImpl(""), IrFileSymbolImpl(), facadeClass.packageFqName!!) + val symbolDeserializer = IrSymbolDeserializer( symbolTable, irLibraryFile, + fileSymbol = dummyIrFile.symbol, /* TODO */ actuals = emptyList(), enqueueLocalTopLevelDeclaration = {}, // just link to it in symbolTable handleExpectActualMapping = { _, _ -> TODO() }, @@ -193,7 +198,6 @@ fun makeSimpleFakeOverrideBuilder( irBuiltIns: IrBuiltIns, symbolDeserializer: IrSymbolDeserializer ): FakeOverrideBuilder { - val signatureSerializer = IdSignatureSerializer(JvmIrMangler) return FakeOverrideBuilder( object : FileLocalAwareLinker { override fun tryReferencingPropertyByLocalSignature(parent: IrDeclaration, idSignature: IdSignature): IrPropertySymbol = @@ -205,9 +209,9 @@ fun makeSimpleFakeOverrideBuilder( symbolDeserializer.referenceSimpleFunctionByLocalSignature(idSignature) }, symbolTable, - signatureSerializer, + JvmIrMangler, irBuiltIns, - fakeOverrideDeclarationTable = PrePopulatedDeclarationTable(symbolDeserializer.deserializedSymbols, signatureSerializer) + fakeOverrideDeclarationTable = PrePopulatedDeclarationTable(symbolDeserializer.deserializedSymbols) ) } @@ -233,9 +237,8 @@ private fun buildFakeOverridesForLocalClasses( } class PrePopulatedDeclarationTable( - sig2symbol: Map, - signatureSerializer: IdSignatureSerializer -) : FakeOverrideDeclarationTable(signatureSerializer) { + sig2symbol: Map +) : FakeOverrideDeclarationTable(JvmIrMangler) { private val symbol2Sig = sig2symbol.entries.associate { (x, y) -> y to x } override fun tryComputeBackendSpecificSignature(declaration: IrDeclaration): IdSignature? { diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/proto/JvmIr.java b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/proto/JvmIr.java index 9334da9b016..ae76d97d36b 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/proto/JvmIr.java +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/proto/JvmIr.java @@ -599,14 +599,26 @@ public final class JvmIr { /** * repeated bytes type = 1; + * + *
+     * TODO: optimize the representation.
+     * 
*/ java.util.List getTypeList(); /** * repeated bytes type = 1; + * + *
+     * TODO: optimize the representation.
+     * 
*/ int getTypeCount(); /** * repeated bytes type = 1; + * + *
+     * TODO: optimize the representation.
+     * 
*/ org.jetbrains.kotlin.protobuf.ByteString getType(int index); @@ -780,6 +792,10 @@ public final class JvmIr { private java.util.List type_; /** * repeated bytes type = 1; + * + *
+     * TODO: optimize the representation.
+     * 
*/ public java.util.List getTypeList() { @@ -787,12 +803,20 @@ public final class JvmIr { } /** * repeated bytes type = 1; + * + *
+     * TODO: optimize the representation.
+     * 
*/ public int getTypeCount() { return type_.size(); } /** * repeated bytes type = 1; + * + *
+     * TODO: optimize the representation.
+     * 
*/ public org.jetbrains.kotlin.protobuf.ByteString getType(int index) { return type_.get(index); @@ -1166,6 +1190,10 @@ public final class JvmIr { } /** * repeated bytes type = 1; + * + *
+       * TODO: optimize the representation.
+       * 
*/ public java.util.List getTypeList() { @@ -1173,18 +1201,30 @@ public final class JvmIr { } /** * repeated bytes type = 1; + * + *
+       * TODO: optimize the representation.
+       * 
*/ public int getTypeCount() { return type_.size(); } /** * repeated bytes type = 1; + * + *
+       * TODO: optimize the representation.
+       * 
*/ public org.jetbrains.kotlin.protobuf.ByteString getType(int index) { return type_.get(index); } /** * repeated bytes type = 1; + * + *
+       * TODO: optimize the representation.
+       * 
*/ public Builder setType( int index, org.jetbrains.kotlin.protobuf.ByteString value) { @@ -1198,6 +1238,10 @@ public final class JvmIr { } /** * repeated bytes type = 1; + * + *
+       * TODO: optimize the representation.
+       * 
*/ public Builder addType(org.jetbrains.kotlin.protobuf.ByteString value) { if (value == null) { @@ -1210,6 +1254,10 @@ public final class JvmIr { } /** * repeated bytes type = 1; + * + *
+       * TODO: optimize the representation.
+       * 
*/ public Builder addAllType( java.lang.Iterable values) { @@ -1221,6 +1269,10 @@ public final class JvmIr { } /** * repeated bytes type = 1; + * + *
+       * TODO: optimize the representation.
+       * 
*/ public Builder clearType() { type_ = java.util.Collections.emptyList();