diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/inlineClassManglingUtils.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/inlineClassManglingUtils.kt index 943ab2027d4..0e49234978f 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/inlineClassManglingUtils.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/inlineClassManglingUtils.kt @@ -76,7 +76,7 @@ fun getManglingSuffixBasedOnKotlinSignature( private fun collectSignatureForMangling(descriptor: CallableMemberDescriptor, useOldManglingRules: Boolean): String { val types = listOfNotNull(descriptor.extensionReceiverParameter?.type) + descriptor.valueParameters.map { it.type } - return types.joinToString { getSignatureElementForMangling(it, useOldManglingRules) } + return types.joinToString(separator = if (useOldManglingRules) ", " else "") { getSignatureElementForMangling(it, useOldManglingRules) } } private fun getSignatureElementForMangling(type: KotlinType, useOldManglingRules: Boolean): String = buildString { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt index 2f1c4bbf2d9..7ce12403cc1 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/irCodegenUtils.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.codegen.FrameMapBase import org.jetbrains.kotlin.codegen.OwnerKind import org.jetbrains.kotlin.codegen.SourceInfo +import org.jetbrains.kotlin.codegen.classFileContainsMethod import org.jetbrains.kotlin.codegen.inline.SourceMapper import org.jetbrains.kotlin.codegen.signature.BothSignatureWriter import org.jetbrains.kotlin.descriptors.ClassKind diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/InlineClassAbi.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/InlineClassAbi.kt index 3e7861b1f5f..0fa409b688c 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/InlineClassAbi.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/inlineclasses/InlineClassAbi.kt @@ -125,7 +125,7 @@ object InlineClassAbi { signatureElementsForMangling += if (useOldMangleRules) "Lkotlin.coroutines.Continuation;" else NOT_INLINE_CLASS_PARAMETER_PLACEHOLDER } - val signatureString = signatureElementsForMangling.joinToString() + + val signatureString = signatureElementsForMangling.joinToString(separator = if (useOldMangleRules) ", " else "") + if (mangleReturnTypes && irFunction.hasMangledReturnType && !useOldMangleRules) ":${irFunction.returnType.eraseToString(useOldMangleRules)}" else "" return md5base64(signatureString) diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.txt index 14d0dc1c4bf..f0e8e34727a 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list.txt @@ -21,8 +21,8 @@ public final class InlineList { private synthetic method (p0: java.util.List): void public synthetic method add(p0: int, p1: java.lang.Object): void public synthetic method add(p0: java.lang.Object): boolean + public method add--AyYFnU(p0: int, p1: int): void public method add-jHY5zpA(p0: int): boolean - public method add-paNdoDA(p0: int, p1: int): void public method addAll(p0: int, p1: java.util.Collection): boolean public method addAll(p0: java.util.Collection): boolean public synthetic final static method box-impl(p0: java.util.List): InlineList @@ -63,7 +63,7 @@ public final class InlineList { public method removeAll(p0: java.util.Collection): boolean public method retainAll(p0: java.util.Collection): boolean public synthetic method set(p0: int, p1: java.lang.Object): java.lang.Object - public method set-_wdf3hM(p0: int, p1: int): int + public method set-kAA0daY(p0: int, p1: int): int public bridge final method size(): int public method subList(p0: int, p1: int): java.util.List public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt index 1477c1320e5..40a3cd61795 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/list_ir.txt @@ -21,8 +21,8 @@ public final class InlineList { private synthetic method (p0: java.util.List): void public synthetic bridge method add(p0: int, p1: java.lang.Object): void public synthetic bridge method add(p0: java.lang.Object): boolean + public method add--AyYFnU(p0: int, p1: int): void public method add-jHY5zpA(p0: int): boolean - public method add-paNdoDA(p0: int, p1: int): void public method addAll(p0: int, p1: java.util.Collection): boolean public method addAll(p0: java.util.Collection): boolean public synthetic final static method box-impl(p0: java.util.List): InlineList @@ -63,7 +63,7 @@ public final class InlineList { public method removeAll(p0: java.util.Collection): boolean public method retainAll(p0: java.util.Collection): boolean public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object - public method set-_wdf3hM(p0: int, p1: int): int + public method set-kAA0daY(p0: int, p1: int): int public synthetic bridge method size(): int public method subList(p0: int, p1: int): java.util.List public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map.txt index 72a6cd266db..24de24be2d7 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map.txt @@ -66,7 +66,7 @@ public final class InlineMap { public static method isEmpty-impl(p0: java.util.Map): boolean public bridge final method keySet(): java.util.Set public synthetic method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object - public method put-eSoqwEg(p0: int, p1: double): IV + public method put-t80dRTo(p0: int, p1: double): IV public method putAll(p0: java.util.Map): void public method remove(p0: java.lang.Object): java.lang.Object public bridge final method size(): int diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map_ir.txt index 8cd948d5258..8e8a274d498 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map_ir.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/map_ir.txt @@ -66,7 +66,7 @@ public final class InlineMap { public static method isEmpty-impl(p0: java.util.Map): boolean public synthetic bridge method keySet(): java.util.Set public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object - public method put-eSoqwEg(p0: int, p1: double): IV + public method put-t80dRTo(p0: int, p1: double): IV public method putAll(p0: java.util.Map): void public bridge final method remove(p0: java.lang.Object): IV public synthetic bridge method remove(p0: java.lang.Object): java.lang.Object diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt index 1b7e7d5f7a6..4cbc2eb382d 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList.txt @@ -21,10 +21,10 @@ public final class InlineMutableList { private synthetic method (p0: java.util.List): void public synthetic bridge method add(p0: int, p1: java.lang.Object): void public synthetic bridge method add(p0: java.lang.Object): boolean + public method add--AyYFnU(p0: int, p1: long): void + public static method add--AyYFnU(p0: java.util.List, p1: int, p2: long): void public static method add-jHY5zpA(p0: java.util.List, p1: long): boolean public method add-jHY5zpA(p0: long): boolean - public method add-paNdoDA(p0: int, p1: long): void - public static method add-paNdoDA(p0: java.util.List, p1: int, p2: long): void public method addAll(p0: int, p1: java.util.Collection): boolean public method addAll(p0: java.util.Collection): boolean public static method addAll-impl(p0: java.util.List, p1: int, p2: java.util.Collection): boolean @@ -74,8 +74,8 @@ public final class InlineMutableList { public method retainAll(p0: java.util.Collection): boolean public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object - public method set-_wdf3hM(p0: int, p1: long): long - public static method set-_wdf3hM(p0: java.util.List, p1: int, p2: long): long + public method set-kAA0daY(p0: int, p1: long): long + public static method set-kAA0daY(p0: java.util.List, p1: int, p2: long): long public bridge final method size(): int public method subList(p0: int, p1: int): java.util.List public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt index 5c9a4536160..e95e8ff4ae3 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableList_ir.txt @@ -21,10 +21,10 @@ public final class InlineMutableList { private synthetic method (p0: java.util.List): void public synthetic bridge method add(p0: int, p1: java.lang.Object): void public synthetic bridge method add(p0: java.lang.Object): boolean + public method add--AyYFnU(p0: int, p1: long): void + public static method add--AyYFnU(p0: java.util.List, p1: int, p2: long): void public static method add-jHY5zpA(p0: java.util.List, p1: long): boolean public method add-jHY5zpA(p0: long): boolean - public method add-paNdoDA(p0: int, p1: long): void - public static method add-paNdoDA(p0: java.util.List, p1: int, p2: long): void public method addAll(p0: int, p1: java.util.Collection): boolean public method addAll(p0: java.util.Collection): boolean public static method addAll-impl(p0: java.util.List, p1: int, p2: java.util.Collection): boolean @@ -74,8 +74,8 @@ public final class InlineMutableList { public method retainAll(p0: java.util.Collection): boolean public static method retainAll-impl(p0: java.util.List, p1: java.util.Collection): boolean public synthetic bridge method set(p0: int, p1: java.lang.Object): java.lang.Object - public method set-_wdf3hM(p0: int, p1: long): long - public static method set-_wdf3hM(p0: java.util.List, p1: int, p2: long): long + public method set-kAA0daY(p0: int, p1: long): long + public static method set-kAA0daY(p0: java.util.List, p1: int, p2: long): long public synthetic bridge method size(): int public method subList(p0: int, p1: int): java.util.List public static method subList-impl(p0: java.util.List, p1: int, p2: int): java.util.List diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap.txt index da3683dba69..84f8aa84ae5 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap.txt @@ -67,8 +67,8 @@ public final class InlineMutableMap { public static method isEmpty-impl(p0: java.util.Map): boolean public bridge final method keySet(): java.util.Set public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object - public method put-eSoqwEg(p0: int, p1: double): IV - public static method put-eSoqwEg(p0: java.util.Map, p1: int, p2: double): IV + public method put-t80dRTo(p0: int, p1: double): IV + public static method put-t80dRTo(p0: java.util.Map, p1: int, p2: double): IV public method putAll(p0: java.util.Map): void public static method putAll-impl(p0: java.util.Map, p1: java.util.Map): void public bridge final method remove(p0: java.lang.Object): java.lang.Object diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap_ir.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap_ir.txt index d0692071ecb..3cd6ac061ca 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap_ir.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineCollectionOfInlineClass/mutableMap_ir.txt @@ -67,8 +67,8 @@ public final class InlineMutableMap { public static method isEmpty-impl(p0: java.util.Map): boolean public synthetic bridge method keySet(): java.util.Set public synthetic bridge method put(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object - public method put-eSoqwEg(p0: int, p1: double): IV - public static method put-eSoqwEg(p0: java.util.Map, p1: int, p2: double): IV + public method put-t80dRTo(p0: int, p1: double): IV + public static method put-t80dRTo(p0: java.util.Map, p1: int, p2: double): IV public method putAll(p0: java.util.Map): void public static method putAll-impl(p0: java.util.Map, p1: java.util.Map): void public bridge final method remove(p0: java.lang.Object): IV diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/nullableAndNotNullPrimitive.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/nullableAndNotNullPrimitive.txt index 8ca732eaa89..e05a34f7f14 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/nullableAndNotNullPrimitive.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/nullableAndNotNullPrimitive.txt @@ -19,6 +19,6 @@ public final class IC { @kotlin.Metadata public final class NullableAndNotNullPrimitiveKt { // source: 'nullableAndNotNullPrimitive.kt' - public final static method foo-3XBUs8U(@org.jetbrains.annotations.Nullable p0: java.lang.Integer, p1: int): void - public final static method foo-3XBUs8U(p0: int, p1: int): void + public final static method foo--SqozA0(@org.jetbrains.annotations.Nullable p0: java.lang.Integer, p1: int): void + public final static method foo--SqozA0(p0: int, p1: int): void } diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/stdlibManglingIn1430/new.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/stdlibManglingIn1430/new.txt index 4db50d34a2d..cdb5f8ffbcf 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/stdlibManglingIn1430/new.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/stdlibManglingIn1430/new.txt @@ -19,5 +19,5 @@ public final class test/IC { @kotlin.Metadata public final class test/NewKt { // source: 'new.kt' - public final static method foo-WsYm_fY(p0: int, p1: int): void + public final static method foo-i2nDo8k(p0: int, p1: int): void } diff --git a/compiler/testData/codegen/bytecodeText/inlineClasses/delegatedPropertyMangling.kt b/compiler/testData/codegen/bytecodeText/inlineClasses/delegatedPropertyMangling.kt index 8e03324c685..f23d758ada9 100644 --- a/compiler/testData/codegen/bytecodeText/inlineClasses/delegatedPropertyMangling.kt +++ b/compiler/testData/codegen/bytecodeText/inlineClasses/delegatedPropertyMangling.kt @@ -18,6 +18,6 @@ class B : A { override val i by Delegate() } -// 1 public final getValue-BwmXtik\(Ljava/lang/Object;Lkotlin/reflect/KProperty;\)I +// 1 public final getValue-MJRKSbM\(Ljava/lang/Object;Lkotlin/reflect/KProperty;\)I // 1 public getI-lPtA-2M\(\)I // 1 public abstract getI-lPtA-2M\(\)I diff --git a/compiler/testData/codegen/bytecodeText/inlineClasses/noBoxingUnboxingInAccessorsForDelegatedPropertyWithInlineClassDelegate.kt b/compiler/testData/codegen/bytecodeText/inlineClasses/noBoxingUnboxingInAccessorsForDelegatedPropertyWithInlineClassDelegate.kt index c2b7a469a2c..2efa0fe76c6 100644 --- a/compiler/testData/codegen/bytecodeText/inlineClasses/noBoxingUnboxingInAccessorsForDelegatedPropertyWithInlineClassDelegate.kt +++ b/compiler/testData/codegen/bytecodeText/inlineClasses/noBoxingUnboxingInAccessorsForDelegatedPropertyWithInlineClassDelegate.kt @@ -28,6 +28,6 @@ inline class Delegate(val default: Int) { // 0 DelegateFactory\.unbox // 0 Delegate\.box // 0 Delegate\.unbox -// 1 INVOKESTATIC DelegateFactory\.provideDelegate-RDSKdTE \(ILjava/lang/Object;Ljava/lang/Object;\)I +// 1 INVOKESTATIC DelegateFactory\.provideDelegate-fSJJ7ck \(ILjava/lang/Object;Ljava/lang/Object;\)I // 1 INVOKESTATIC Delegate\.getValue-impl \(ILjava/lang/Object;Ljava/lang/Object;\)I // 1 INVOKESTATIC Delegate\.setValue-impl \(ILjava/lang/Object;Ljava/lang/Object;I\)V \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeText/inlineClasses/suspendFunctionMangling.kt b/compiler/testData/codegen/bytecodeText/inlineClasses/suspendFunctionMangling.kt index a8dea139fc6..41c925d32c0 100644 --- a/compiler/testData/codegen/bytecodeText/inlineClasses/suspendFunctionMangling.kt +++ b/compiler/testData/codegen/bytecodeText/inlineClasses/suspendFunctionMangling.kt @@ -13,7 +13,7 @@ suspend fun bar(p: P) {} // The mangled name for a suspend function includes the continuation parameter in the hash computation, but not the // default argument mask and handler. -// 1 public final static foo-_K3kcpY\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object; -// 1 public static synthetic foo-_K3kcpY\$default\(ILkotlin/coroutines/Continuation;ILjava/lang/Object;\)Ljava/lang/Object; -// 1 INVOKESTATIC a/TestKt.foo-_K3kcpY \(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object; -// 1 public final static bar-_K3kcpY\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object; \ No newline at end of file +// 1 public final static foo-O6Ntpp4\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object; +// 1 public static synthetic foo-O6Ntpp4\$default\(ILkotlin/coroutines/Continuation;ILjava/lang/Object;\)Ljava/lang/Object; +// 1 INVOKESTATIC a/TestKt.foo-O6Ntpp4 \(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object; +// 1 public final static bar-O6Ntpp4\(ILkotlin/coroutines/Continuation;\)Ljava/lang/Object; \ No newline at end of file diff --git a/compiler/testData/writeSignature/inlineClasses/genericMethodInsideClass.kt b/compiler/testData/writeSignature/inlineClasses/genericMethodInsideClass.kt index e525b4bba78..46c7ccd1b5e 100644 --- a/compiler/testData/writeSignature/inlineClasses/genericMethodInsideClass.kt +++ b/compiler/testData/writeSignature/inlineClasses/genericMethodInsideClass.kt @@ -22,6 +22,6 @@ inline class SomeClass(val v: Int) { // jvm signature: (ILjava/lang/Object;)Ljava/lang/Object; // generic signature: (ITK;)TK; -// method: SomeClass$Companion::comp-TwaN_yk +// method: SomeClass$Companion::comp-hRy0JnA // jvm signature: (ILjava/lang/Object;)Ljava/lang/Object; // generic signature: (ITT;)TT; \ No newline at end of file diff --git a/compiler/testData/writeSignature/inlineClasses/simpleSignatureWithInlineClassTypesAsPrimitive.kt b/compiler/testData/writeSignature/inlineClasses/simpleSignatureWithInlineClassTypesAsPrimitive.kt index 6d723ade8cc..9523bc3c1ba 100644 --- a/compiler/testData/writeSignature/inlineClasses/simpleSignatureWithInlineClassTypesAsPrimitive.kt +++ b/compiler/testData/writeSignature/inlineClasses/simpleSignatureWithInlineClassTypesAsPrimitive.kt @@ -21,6 +21,6 @@ object Test { // jvm signature: (I)V // generic signature: null -// method: Test::asAll-ZcpZUGQ +// method: Test::asAll-rPNOez0 // jvm signature: (ILjava/lang/Object;II)I // generic signature: null