diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt index 5ad7f418f63..8d2770c73ae 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackend.kt @@ -20,18 +20,20 @@ import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.util.render -import java.lang.AssertionError class JvmBackend(val context: JvmBackendContext) { private val lower = JvmLower(context) private val codegen = JvmCodegen(context) - fun generateFile(irFile: IrFile) { - val extensions = IrGenerationExtension.getInstances(context.state.project) - extensions.forEach { it.generate(irFile, context, context.state.bindingContext) } + fun lowerFile(irFile: IrFile) { + for (extension in IrGenerationExtension.getInstances(context.state.project)) { + extension.generate(irFile, context, context.state.bindingContext) + } lower.lower(irFile) + } + fun generateLoweredFile(irFile: IrFile) { for (loweredClass in irFile.declarations) { if (loweredClass !is IrClass) { throw AssertionError("File-level declaration should be IrClass after JvmLower, got: " + loweredClass.render()) @@ -40,4 +42,4 @@ class JvmBackend(val context: JvmBackendContext) { codegen.generateClass(loweredClass) } } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt index 22e38458f6f..5595fe8c58d 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt @@ -66,11 +66,19 @@ object JvmBackendFacade { for (irFile in irModuleFragment.files) { try { - jvmBackend.generateFile(irFile) - state.afterIndependentPart() + jvmBackend.lowerFile(irFile) } catch (e: Throwable) { errorHandler.reportException(e, null) // TODO ktFile.virtualFile.url } } + + for (irFile in irModuleFragment.files) { + try { + jvmBackend.generateLoweredFile(irFile) + state.afterIndependentPart() + } catch (e: Throwable) { + errorHandler.reportException(e, null) + } + } } } diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt index 5db710738d0..566e2a83b8a 100644 --- a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt +++ b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // IGNORE_LIGHT_ANALYSIS // WITH_RUNTIME diff --git a/compiler/testData/codegen/bytecodeText/constantConditions/cmpIntWith0.kt b/compiler/testData/codegen/bytecodeText/constantConditions/cmpIntWith0.kt index 2dfb4757f60..e98cf7b9f4a 100644 --- a/compiler/testData/codegen/bytecodeText/constantConditions/cmpIntWith0.kt +++ b/compiler/testData/codegen/bytecodeText/constantConditions/cmpIntWith0.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: util.kt inline fun ieq(x: Int, y: Int) = x == y @@ -23,4 +22,4 @@ fun testge(x: Int) = ige(x, 0) // 0 IF_ICMPGE // 0 IF_ICMPGT // 0 IF_ICMPLE -// 0 IF_ICMPLT \ No newline at end of file +// 0 IF_ICMPLT diff --git a/compiler/testData/codegen/bytecodeText/constantConditions/constantFlag.kt b/compiler/testData/codegen/bytecodeText/constantConditions/constantFlag.kt index 294f567e0ef..5a02a0a4bfe 100644 --- a/compiler/testData/codegen/bytecodeText/constantConditions/constantFlag.kt +++ b/compiler/testData/codegen/bytecodeText/constantConditions/constantFlag.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: util.kt const val FLAG = true const val OTHER_FLAG = false diff --git a/compiler/testData/codegen/bytecodeText/constantConditions/constantInt.kt b/compiler/testData/codegen/bytecodeText/constantConditions/constantInt.kt index da418c96e73..12fbd0a2cd0 100644 --- a/compiler/testData/codegen/bytecodeText/constantConditions/constantInt.kt +++ b/compiler/testData/codegen/bytecodeText/constantConditions/constantInt.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // FILE: util.kt const val MAGIC = 42 @@ -56,4 +55,4 @@ fun test() { // 0 IFLT // 0 IFLE // 0 IFGE -// 0 IFGT \ No newline at end of file +// 0 IFGT