diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilder.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilder.java index 641b695dab0..260166ca980 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilder.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilder.java @@ -20,23 +20,17 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.codegen.ClassBuilder; import org.jetbrains.kotlin.codegen.DelegatingClassBuilder; -import org.jetbrains.kotlin.config.JVMConstructorCallNormalizationMode; +import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; import org.jetbrains.org.objectweb.asm.MethodVisitor; public class OptimizationClassBuilder extends DelegatingClassBuilder { private final ClassBuilder delegate; - private final boolean disableOptimization; - private final JVMConstructorCallNormalizationMode constructorCallNormalizationMode; + private final GenerationState generationState; - public OptimizationClassBuilder( - @NotNull ClassBuilder delegate, - boolean disableOptimization, - JVMConstructorCallNormalizationMode constructorCallNormalizationMode - ) { + public OptimizationClassBuilder(@NotNull ClassBuilder delegate, @NotNull GenerationState generationState) { this.delegate = delegate; - this.disableOptimization = disableOptimization; - this.constructorCallNormalizationMode = constructorCallNormalizationMode; + this.generationState = generationState; } @NotNull @@ -57,8 +51,7 @@ public class OptimizationClassBuilder extends DelegatingClassBuilder { ) { return new OptimizationMethodVisitor( super.newMethod(origin, access, name, desc, signature, exceptions), - disableOptimization, constructorCallNormalizationMode, - access, name, desc, signature, exceptions + generationState, access, name, desc, signature, exceptions ); } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilderFactory.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilderFactory.java index f0ed86f9a1f..6feb6e1070e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilderFactory.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationClassBuilderFactory.java @@ -19,28 +19,20 @@ package org.jetbrains.kotlin.codegen.optimization; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.codegen.ClassBuilderFactory; import org.jetbrains.kotlin.codegen.DelegatingClassBuilderFactory; -import org.jetbrains.kotlin.config.JVMConstructorCallNormalizationMode; +import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; public class OptimizationClassBuilderFactory extends DelegatingClassBuilderFactory { - private final boolean disableOptimization; - private final JVMConstructorCallNormalizationMode constructorCallNormalizationMode; + private final GenerationState generationState; - public OptimizationClassBuilderFactory( - ClassBuilderFactory delegate, - boolean disableOptimization, - JVMConstructorCallNormalizationMode constructorCallNormalizationMode - ) { + public OptimizationClassBuilderFactory(ClassBuilderFactory delegate, @NotNull GenerationState generationState) { super(delegate); - this.disableOptimization = disableOptimization; - this.constructorCallNormalizationMode = constructorCallNormalizationMode; + this.generationState = generationState; } @NotNull @Override public OptimizationClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) { - return new OptimizationClassBuilder( - getDelegate().newClassBuilder(origin), disableOptimization, constructorCallNormalizationMode - ); + return new OptimizationClassBuilder(getDelegate().newClassBuilder(origin), generationState); } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt index 79ac499c6a5..78c04fd2df2 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/OptimizationMethodVisitor.kt @@ -23,14 +23,13 @@ import org.jetbrains.kotlin.codegen.optimization.boxing.StackPeepholeOptimizatio import org.jetbrains.kotlin.codegen.optimization.common.prepareForEmitting import org.jetbrains.kotlin.codegen.optimization.nullCheck.RedundantNullCheckMethodTransformer import org.jetbrains.kotlin.codegen.optimization.transformer.CompositeMethodTransformer -import org.jetbrains.kotlin.config.JVMConstructorCallNormalizationMode +import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.org.objectweb.asm.MethodVisitor import org.jetbrains.org.objectweb.asm.tree.MethodNode class OptimizationMethodVisitor( delegate: MethodVisitor, - private val disableOptimization: Boolean, - private val constructorCallNormalizationMode: JVMConstructorCallNormalizationMode, + private val generationState: GenerationState, access: Int, name: String, desc: String, @@ -38,13 +37,13 @@ class OptimizationMethodVisitor( exceptions: Array? ) : TransformationMethodVisitor(delegate, access, name, desc, signature, exceptions) { private val constructorCallNormalizationTransformer = - UninitializedStoresMethodTransformer(constructorCallNormalizationMode) + UninitializedStoresMethodTransformer(generationState.constructorCallNormalizationMode) override fun performTransformations(methodNode: MethodNode) { normalizationMethodTransformer.transform("fake", methodNode) constructorCallNormalizationTransformer.transform("fake", methodNode) - if (canBeOptimized(methodNode) && !disableOptimization) { + if (canBeOptimized(methodNode) && !generationState.disableOptimization) { optimizationTransformer.transform("fake", methodNode) } 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 e1eea952547..804aa162128 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt @@ -229,12 +229,12 @@ class GenerationState private constructor( val jvmDefaultMode = languageVersionSettings.getFlag(AnalysisFlag.jvmDefaultMode) - init { - val disableOptimization = configuration.get(JVMConfigurationKeys.DISABLE_OPTIMIZATION, false) + val disableOptimization = configuration.get(JVMConfigurationKeys.DISABLE_OPTIMIZATION, false) + init { this.interceptedBuilderFactory = builderFactory .wrapWith( - { OptimizationClassBuilderFactory(it, disableOptimization, constructorCallNormalizationMode) }, + { OptimizationClassBuilderFactory(it, this) }, { BuilderFactoryForDuplicateSignatureDiagnostics( it, this.bindingContext, diagnostics, this.moduleName,