diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/PhaseBuilders.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/PhaseBuilders.kt index bcbbd19d139..30ae51308c1 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/PhaseBuilders.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/PhaseBuilders.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.backend.common.phaser import org.jetbrains.kotlin.backend.common.CommonBackendContext import org.jetbrains.kotlin.backend.common.FileLoweringPass +import org.jetbrains.kotlin.backend.common.LoggingContext import org.jetbrains.kotlin.backend.common.lower import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrFile @@ -47,6 +48,52 @@ infix fun CompilerPhase) phases + unsafeOther else listOf(unsafeThis, unsafeOther)) } +fun createSimpleNamedCompilerPhase( + name: String, + description: String, + preactions: Set> = emptySet(), + postactions: Set> = emptySet(), + prerequisite: Set> = emptySet(), + outputIfNotEnabled: (PhaseConfigurationService, PhaserState, Context, Input) -> Output, + op: (Context, Input) -> Output +): SimpleNamedCompilerPhase = object : SimpleNamedCompilerPhase( + name, + description, + preactions = preactions, + postactions = postactions.map { f -> + fun(actionState: ActionState, data: Pair, context: Context) = f(actionState, data.second, context) + }.toSet(), + prerequisite = prerequisite, +) { + override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState, context: Context, input: Input): Output = + outputIfNotEnabled(phaseConfig, phaserState, context, input) + + override fun phaseBody(context: Context, input: Input): Output = + op(context, input) +} + +fun createSimpleNamedCompilerPhase( + name: String, + description: String, + preactions: Set> = emptySet(), + postactions: Set> = emptySet(), + prerequisite: Set> = emptySet(), + op: (Context, Input) -> Unit +): SimpleNamedCompilerPhase = object : SimpleNamedCompilerPhase( + name, + description, + preactions = preactions, + postactions = postactions.map { f -> + fun(actionState: ActionState, data: Pair, context: Context) = f(actionState, data.first, context) + }.toSet(), + prerequisite = prerequisite, +) { + override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState, context: Context, input: Input) {} + + override fun phaseBody(context: Context, input: Input): Unit = + op(context, input) +} + fun makeCustomPhase( op: (Context, Element) -> Unit, name: String, diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendPhases.kt index 70b3e1c59d4..4834a16f20b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendPhases.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendPhases.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases import org.jetbrains.kotlin.backend.common.lower +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.NativeGenerationState import org.jetbrains.kotlin.backend.konan.OutputFiles import org.jetbrains.kotlin.backend.konan.driver.PhaseContext diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Bitcode.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Bitcode.kt index ed5ba37d909..7b78dead654 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Bitcode.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Bitcode.kt @@ -9,6 +9,7 @@ import llvm.LLVMDumpModule import llvm.LLVMModuleRef import llvm.LLVMWriteBitcodeToFile import org.jetbrains.kotlin.backend.common.LoggingContext +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.NativeGenerationState import org.jetbrains.kotlin.backend.konan.checkLlvmModuleExternalCalls diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BitcodeGeneration.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BitcodeGeneration.kt index c51db6aaec8..46c5aadefa6 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BitcodeGeneration.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BitcodeGeneration.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases import llvm.DIFinalize +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.NativeGenerationState import org.jetbrains.kotlin.backend.konan.driver.utilities.KotlinBackendIrHolder import org.jetbrains.kotlin.backend.konan.driver.utilities.getDefaultIrActions diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CExport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CExport.kt index 86cb3d2a949..d1f9200337d 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CExport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CExport.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.cexport.* import org.jetbrains.kotlin.backend.konan.cexport.CAdapterApiExporter import org.jetbrains.kotlin.backend.konan.cexport.CAdapterExportedElements diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CacheBuilding.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CacheBuilding.kt index 94da8ec6103..05d8237ab81 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CacheBuilding.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/CacheBuilding.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.CacheStorage import org.jetbrains.kotlin.backend.konan.NativeGenerationState import org.jetbrains.kotlin.backend.konan.OutputFiles diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Fir2Ir.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Fir2Ir.kt index e877fa8c6b9..71a3dd63d6f 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Fir2Ir.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Fir2Ir.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases import org.jetbrains.kotlin.backend.common.actualizer.IrActualizedResult +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.driver.PhaseContext import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine import org.jetbrains.kotlin.backend.konan.fir2Ir diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirFrontend.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirFrontend.kt index 7e6236fc4cc..e31e5c7cbd3 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirFrontend.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirFrontend.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.driver.PhaseContext import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine import org.jetbrains.kotlin.backend.konan.firFrontendWithPsi diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirSerializer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirSerializer.kt index e6c7e840567..1158f0c7550 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirSerializer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/FirSerializer.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.driver.PhaseContext import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine import org.jetbrains.kotlin.backend.konan.firSerializer diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt index 6fdae523e78..41f6da7a522 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases import org.jetbrains.kotlin.analyzer.AnalysisResult +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.TopDownAnalyzerFacadeForKonan import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/LTO.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/LTO.kt index a400f3ed7cf..e9a28141504 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/LTO.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/LTO.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases import org.jetbrains.kotlin.backend.common.phaser.ActionState +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.NativeGenerationState import org.jetbrains.kotlin.backend.konan.descriptors.GlobalHierarchyAnalysis import org.jetbrains.kotlin.backend.konan.driver.utilities.KotlinBackendIrHolder diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Linker.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Linker.kt index b3e912bea78..8f108775bde 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Linker.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Linker.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.Linker import org.jetbrains.kotlin.backend.konan.driver.PhaseContext diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjCExport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjCExport.kt index c70243cea46..729841bb95e 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjCExport.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjCExport.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.OutputFiles import org.jetbrains.kotlin.backend.konan.driver.PhaseContext import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportCodeSpec diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjectFiles.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjectFiles.kt index f608a9faefc..26205747507 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjectFiles.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/ObjectFiles.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.BitcodeCompiler import org.jetbrains.kotlin.backend.konan.driver.PhaseContext import java.io.File diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PhaseBuilders.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PhaseBuilders.kt deleted file mode 100644 index cabda73812c..00000000000 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PhaseBuilders.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.backend.konan.driver.phases - -import org.jetbrains.kotlin.backend.common.LoggingContext -import org.jetbrains.kotlin.backend.common.phaser.* - -internal fun createSimpleNamedCompilerPhase( - name: String, - description: String, - preactions: Set> = emptySet(), - postactions: Set> = emptySet(), - prerequisite: Set> = emptySet(), - outputIfNotEnabled: (PhaseConfigurationService, PhaserState, Context, Input) -> Output, - op: (Context, Input) -> Output -): SimpleNamedCompilerPhase = object : SimpleNamedCompilerPhase( - name, - description, - preactions = preactions, - postactions = postactions.map { f -> - fun(actionState: ActionState, data: Pair, context: Context) = f(actionState, data.second, context) - }.toSet(), - prerequisite = prerequisite, -) { - override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState, context: Context, input: Input): Output = - outputIfNotEnabled(phaseConfig, phaserState, context, input) - - override fun phaseBody(context: Context, input: Input): Output = - op(context, input) -} - -internal fun createSimpleNamedCompilerPhase( - name: String, - description: String, - preactions: Set> = emptySet(), - postactions: Set> = emptySet(), - prerequisite: Set> = emptySet(), - op: (Context, Input) -> Unit -): SimpleNamedCompilerPhase = object : SimpleNamedCompilerPhase( - name, - description, - preactions = preactions, - postactions = postactions.map { f -> - fun(actionState: ActionState, data: Pair, context: Context) = f(actionState, data.first, context) - }.toSet(), - prerequisite = prerequisite, -) { - override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState, context: Context, input: Input) {} - - override fun phaseBody(context: Context, input: Input): Unit = - op(context, input) -} - diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt index b9ab46631c2..70e3445b670 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/PsiToIr.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.KonanConfig import org.jetbrains.kotlin.backend.konan.KonanReflectionTypes import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt index ac9089cd554..b4e1602fb8b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Serializer.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer import org.jetbrains.kotlin.backend.konan.driver.PhaseContext diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/WriteKlib.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/WriteKlib.kt index 645f1c74a4a..9ed196963bd 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/WriteKlib.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/WriteKlib.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.konan.driver.phases +import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase import org.jetbrains.kotlin.backend.konan.KonanConfigKeys import org.jetbrains.kotlin.backend.konan.OutputFiles import org.jetbrains.kotlin.backend.konan.driver.PhaseContext