[Native] Move createSimpleNamedCompilerPhase into common.phaser.PhaseBuilders
This is needed to be able to reuse these functions for other backends.
This commit is contained in:
+47
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.backend.common.phaser
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
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.backend.common.lower
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
@@ -47,6 +48,52 @@ infix fun <Context : CommonBackendContext, Input, Mid, Output> CompilerPhase<Con
|
|||||||
return CompositePhase(if (this is CompositePhase<Context, *, *>) phases + unsafeOther else listOf(unsafeThis, unsafeOther))
|
return CompositePhase(if (this is CompositePhase<Context, *, *>) phases + unsafeOther else listOf(unsafeThis, unsafeOther))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <Context : LoggingContext, Input, Output> createSimpleNamedCompilerPhase(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
preactions: Set<Action<Input, Context>> = emptySet(),
|
||||||
|
postactions: Set<Action<Output, Context>> = emptySet(),
|
||||||
|
prerequisite: Set<AbstractNamedCompilerPhase<*, *, *>> = emptySet(),
|
||||||
|
outputIfNotEnabled: (PhaseConfigurationService, PhaserState<Input>, Context, Input) -> Output,
|
||||||
|
op: (Context, Input) -> Output
|
||||||
|
): SimpleNamedCompilerPhase<Context, Input, Output> = object : SimpleNamedCompilerPhase<Context, Input, Output>(
|
||||||
|
name,
|
||||||
|
description,
|
||||||
|
preactions = preactions,
|
||||||
|
postactions = postactions.map { f ->
|
||||||
|
fun(actionState: ActionState, data: Pair<Input, Output>, context: Context) = f(actionState, data.second, context)
|
||||||
|
}.toSet(),
|
||||||
|
prerequisite = prerequisite,
|
||||||
|
) {
|
||||||
|
override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState<Input>, context: Context, input: Input): Output =
|
||||||
|
outputIfNotEnabled(phaseConfig, phaserState, context, input)
|
||||||
|
|
||||||
|
override fun phaseBody(context: Context, input: Input): Output =
|
||||||
|
op(context, input)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <Context : LoggingContext, Input> createSimpleNamedCompilerPhase(
|
||||||
|
name: String,
|
||||||
|
description: String,
|
||||||
|
preactions: Set<Action<Input, Context>> = emptySet(),
|
||||||
|
postactions: Set<Action<Input, Context>> = emptySet(),
|
||||||
|
prerequisite: Set<AbstractNamedCompilerPhase<*, *, *>> = emptySet(),
|
||||||
|
op: (Context, Input) -> Unit
|
||||||
|
): SimpleNamedCompilerPhase<Context, Input, Unit> = object : SimpleNamedCompilerPhase<Context, Input, Unit>(
|
||||||
|
name,
|
||||||
|
description,
|
||||||
|
preactions = preactions,
|
||||||
|
postactions = postactions.map { f ->
|
||||||
|
fun(actionState: ActionState, data: Pair<Input, Unit>, context: Context) = f(actionState, data.first, context)
|
||||||
|
}.toSet(),
|
||||||
|
prerequisite = prerequisite,
|
||||||
|
) {
|
||||||
|
override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState<Input>, context: Context, input: Input) {}
|
||||||
|
|
||||||
|
override fun phaseBody(context: Context, input: Input): Unit =
|
||||||
|
op(context, input)
|
||||||
|
}
|
||||||
|
|
||||||
fun <Context : CommonBackendContext, Element : IrElement> makeCustomPhase(
|
fun <Context : CommonBackendContext, Element : IrElement> makeCustomPhase(
|
||||||
op: (Context, Element) -> Unit,
|
op: (Context, Element) -> Unit,
|
||||||
name: String,
|
name: String,
|
||||||
|
|||||||
+1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
package org.jetbrains.kotlin.backend.konan.driver.phases
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.lower
|
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.NativeGenerationState
|
||||||
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||||
|
|||||||
+1
@@ -9,6 +9,7 @@ import llvm.LLVMDumpModule
|
|||||||
import llvm.LLVMModuleRef
|
import llvm.LLVMModuleRef
|
||||||
import llvm.LLVMWriteBitcodeToFile
|
import llvm.LLVMWriteBitcodeToFile
|
||||||
import org.jetbrains.kotlin.backend.common.LoggingContext
|
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.*
|
||||||
import org.jetbrains.kotlin.backend.konan.NativeGenerationState
|
import org.jetbrains.kotlin.backend.konan.NativeGenerationState
|
||||||
import org.jetbrains.kotlin.backend.konan.checkLlvmModuleExternalCalls
|
import org.jetbrains.kotlin.backend.konan.checkLlvmModuleExternalCalls
|
||||||
|
|||||||
+1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
package org.jetbrains.kotlin.backend.konan.driver.phases
|
||||||
|
|
||||||
import llvm.DIFinalize
|
import llvm.DIFinalize
|
||||||
|
import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase
|
||||||
import org.jetbrains.kotlin.backend.konan.NativeGenerationState
|
import org.jetbrains.kotlin.backend.konan.NativeGenerationState
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.utilities.KotlinBackendIrHolder
|
import org.jetbrains.kotlin.backend.konan.driver.utilities.KotlinBackendIrHolder
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.utilities.getDefaultIrActions
|
import org.jetbrains.kotlin.backend.konan.driver.utilities.getDefaultIrActions
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.*
|
||||||
import org.jetbrains.kotlin.backend.konan.cexport.CAdapterApiExporter
|
import org.jetbrains.kotlin.backend.konan.cexport.CAdapterApiExporter
|
||||||
import org.jetbrains.kotlin.backend.konan.cexport.CAdapterExportedElements
|
import org.jetbrains.kotlin.backend.konan.cexport.CAdapterExportedElements
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.CacheStorage
|
||||||
import org.jetbrains.kotlin.backend.konan.NativeGenerationState
|
import org.jetbrains.kotlin.backend.konan.NativeGenerationState
|
||||||
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
||||||
|
|||||||
+1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
package org.jetbrains.kotlin.backend.konan.driver.phases
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.actualizer.IrActualizedResult
|
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.PhaseContext
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
||||||
import org.jetbrains.kotlin.backend.konan.fir2Ir
|
import org.jetbrains.kotlin.backend.konan.fir2Ir
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.PhaseContext
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
||||||
import org.jetbrains.kotlin.backend.konan.firFrontendWithPsi
|
import org.jetbrains.kotlin.backend.konan.firFrontendWithPsi
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.PhaseContext
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
|
||||||
import org.jetbrains.kotlin.backend.konan.firSerializer
|
import org.jetbrains.kotlin.backend.konan.firSerializer
|
||||||
|
|||||||
+1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
package org.jetbrains.kotlin.backend.konan.driver.phases
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
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.*
|
||||||
import org.jetbrains.kotlin.backend.konan.TopDownAnalyzerFacadeForKonan
|
import org.jetbrains.kotlin.backend.konan.TopDownAnalyzerFacadeForKonan
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext
|
||||||
|
|||||||
+1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
package org.jetbrains.kotlin.backend.konan.driver.phases
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.ActionState
|
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.NativeGenerationState
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.GlobalHierarchyAnalysis
|
import org.jetbrains.kotlin.backend.konan.descriptors.GlobalHierarchyAnalysis
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.utilities.KotlinBackendIrHolder
|
import org.jetbrains.kotlin.backend.konan.driver.utilities.KotlinBackendIrHolder
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.*
|
||||||
import org.jetbrains.kotlin.backend.konan.Linker
|
import org.jetbrains.kotlin.backend.konan.Linker
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.OutputFiles
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||||
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportCodeSpec
|
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportCodeSpec
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.BitcodeCompiler
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|||||||
-56
@@ -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 <Context : LoggingContext, Input, Output> createSimpleNamedCompilerPhase(
|
|
||||||
name: String,
|
|
||||||
description: String,
|
|
||||||
preactions: Set<Action<Input, Context>> = emptySet(),
|
|
||||||
postactions: Set<Action<Output, Context>> = emptySet(),
|
|
||||||
prerequisite: Set<AbstractNamedCompilerPhase<*, *, *>> = emptySet(),
|
|
||||||
outputIfNotEnabled: (PhaseConfigurationService, PhaserState<Input>, Context, Input) -> Output,
|
|
||||||
op: (Context, Input) -> Output
|
|
||||||
): SimpleNamedCompilerPhase<Context, Input, Output> = object : SimpleNamedCompilerPhase<Context, Input, Output>(
|
|
||||||
name,
|
|
||||||
description,
|
|
||||||
preactions = preactions,
|
|
||||||
postactions = postactions.map { f ->
|
|
||||||
fun(actionState: ActionState, data: Pair<Input, Output>, context: Context) = f(actionState, data.second, context)
|
|
||||||
}.toSet(),
|
|
||||||
prerequisite = prerequisite,
|
|
||||||
) {
|
|
||||||
override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState<Input>, context: Context, input: Input): Output =
|
|
||||||
outputIfNotEnabled(phaseConfig, phaserState, context, input)
|
|
||||||
|
|
||||||
override fun phaseBody(context: Context, input: Input): Output =
|
|
||||||
op(context, input)
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun <Context : LoggingContext, Input> createSimpleNamedCompilerPhase(
|
|
||||||
name: String,
|
|
||||||
description: String,
|
|
||||||
preactions: Set<Action<Input, Context>> = emptySet(),
|
|
||||||
postactions: Set<Action<Input, Context>> = emptySet(),
|
|
||||||
prerequisite: Set<AbstractNamedCompilerPhase<*, *, *>> = emptySet(),
|
|
||||||
op: (Context, Input) -> Unit
|
|
||||||
): SimpleNamedCompilerPhase<Context, Input, Unit> = object : SimpleNamedCompilerPhase<Context, Input, Unit>(
|
|
||||||
name,
|
|
||||||
description,
|
|
||||||
preactions = preactions,
|
|
||||||
postactions = postactions.map { f ->
|
|
||||||
fun(actionState: ActionState, data: Pair<Input, Unit>, context: Context) = f(actionState, data.first, context)
|
|
||||||
}.toSet(),
|
|
||||||
prerequisite = prerequisite,
|
|
||||||
) {
|
|
||||||
override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState<Input>, context: Context, input: Input) {}
|
|
||||||
|
|
||||||
override fun phaseBody(context: Context, input: Input): Unit =
|
|
||||||
op(context, input)
|
|
||||||
}
|
|
||||||
|
|
||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.KonanConfig
|
||||||
import org.jetbrains.kotlin.backend.konan.KonanReflectionTypes
|
import org.jetbrains.kotlin.backend.konan.KonanReflectionTypes
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.CompatibilityMode
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer
|
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.konan.driver.phases
|
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.KonanConfigKeys
|
||||||
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
import org.jetbrains.kotlin.backend.konan.OutputFiles
|
||||||
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
|
||||||
|
|||||||
Reference in New Issue
Block a user