From 6ba57abb8f4ffd993fe67e544e7a212a8345efa5 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Fri, 12 Feb 2021 14:35:24 +0300 Subject: [PATCH] JVM don't use indy by default for SAM conversions (wait for KT-44844) KT-44278 KT-26060 KT-42621 --- .../jetbrains/kotlin/codegen/state/GenerationState.kt | 9 ++++++--- .../samAdapterForJavaInterfaceWithNullability.kt | 2 +- .../samAdapterForJavaInterfaceWithNullability_ir.txt | 10 ---------- .../sam/samWrapperForNullInitialization.kt | 1 + .../sam/samWrapperForNullableInitialization.kt | 1 + .../codegen/bytecodeText/sam/samWrapperOfLambda.kt | 1 + 6 files changed, 10 insertions(+), 14 deletions(-) delete mode 100644 compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt index 04057ffd8f4..5a18ad4958e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt @@ -211,10 +211,13 @@ class GenerationState private constructor( val fromConfig = configuration.get(JVMConfigurationKeys.SAM_CONVERSIONS) if (fromConfig != null && target >= fromConfig.minJvmTarget) fromConfig - else if (target >= JvmTarget.JVM_1_8 && languageVersionSettings.supportsFeature(LanguageFeature.SamWrapperClassesAreSynthetic)) - JvmClosureGenerationScheme.INDY - else + else { + // TODO wait for KT-44844 (properly support 'invokedynamic' in JPS incremental compilation) + // Use JvmClosureGenerationScheme.INDY if + // JVM target is at least JVM_1_8 && + // SamWrapperClassesAreSynthetic language feature is supported JvmClosureGenerationScheme.CLASS + } } val lambdasScheme = run { diff --git a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.kt b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.kt index 20802d611b7..43eac75c085 100644 --- a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.kt +++ b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability.kt @@ -1,4 +1,4 @@ -// SAM_CONVERSIONS: CLASS +// KOTLIN_CONFIGURATION_FLAGS: SAM_CONVERSIONS=CLASS // FILE: samAdapterForJavaInterfaceWithNullability.kt fun testNullable(s: String) = JNullable { s } fun testNotNull(s: String) = JNotNull { s } diff --git a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt deleted file mode 100644 index 6fedbee2322..00000000000 --- a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/samAdapterForJavaInterfaceWithNullability_ir.txt +++ /dev/null @@ -1,10 +0,0 @@ -@kotlin.Metadata -public final class SamAdapterForJavaInterfaceWithNullabilityKt { - // source: 'samAdapterForJavaInterfaceWithNullability.kt' - private final static method testNoAnnotation$lambda-2(p0: java.lang.String): java.lang.String - public final static @org.jetbrains.annotations.NotNull method testNoAnnotation(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNoAnnotation - private final static method testNotNull$lambda-1(p0: java.lang.String): java.lang.String - public final static @org.jetbrains.annotations.NotNull method testNotNull(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNotNull - private final static method testNullable$lambda-0(p0: java.lang.String): java.lang.String - public final static @org.jetbrains.annotations.NotNull method testNullable(@org.jetbrains.annotations.NotNull p0: java.lang.String): JNullable -} diff --git a/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt b/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt index e15c32784e8..f4ef23b565f 100644 --- a/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt +++ b/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullInitialization.kt @@ -1,3 +1,4 @@ +// KOTLIN_CONFIGURATION_FLAGS: SAM_CONVERSIONS=INDY // FILE: JFoo.java import org.jetbrains.annotations.Nullable; diff --git a/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullableInitialization.kt b/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullableInitialization.kt index 719ef304308..54a2d031fd8 100644 --- a/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullableInitialization.kt +++ b/compiler/testData/codegen/bytecodeText/sam/samWrapperForNullableInitialization.kt @@ -1,3 +1,4 @@ +// KOTLIN_CONFIGURATION_FLAGS: SAM_CONVERSIONS=INDY // FILE: JFoo.java import org.jetbrains.annotations.Nullable; diff --git a/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt b/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt index b82b5f40424..af8e1471482 100644 --- a/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt +++ b/compiler/testData/codegen/bytecodeText/sam/samWrapperOfLambda.kt @@ -1,3 +1,4 @@ +// KOTLIN_CONFIGURATION_FLAGS: SAM_CONVERSIONS=INDY // FILE: JFoo.java public class JFoo {