Merge interop part 1 and part 2 phases
This commit is contained in:
committed by
SvyatoslavScherbina
parent
f989ba0f55
commit
b46200bc74
+5
-12
@@ -239,18 +239,11 @@ internal val callableReferencePhase = makeKonanFileLoweringPhase(
|
|||||||
prerequisite = setOf(delegationPhase) // TODO: make weak dependency on `testProcessorPhase`
|
prerequisite = setOf(delegationPhase) // TODO: make weak dependency on `testProcessorPhase`
|
||||||
)
|
)
|
||||||
|
|
||||||
internal val interopPart1Phase = makeKonanFileLoweringPhase(
|
internal val interopPhase = makeKonanFileLoweringPhase(
|
||||||
::InteropLoweringPart1,
|
::InteropLowering,
|
||||||
name = "InteropPart1",
|
name = "Interop",
|
||||||
description = "Interop lowering, part 1",
|
description = "Interop lowering",
|
||||||
prerequisite = setOf(inlinePhase)
|
prerequisite = setOf(inlinePhase, localFunctionsPhase)
|
||||||
)
|
|
||||||
|
|
||||||
internal val interopPart2Phase = makeKonanFileLoweringPhase(
|
|
||||||
::InteropLoweringPart2,
|
|
||||||
name = "InteropPart2",
|
|
||||||
description = "Interop lowering, part 2",
|
|
||||||
prerequisite = setOf(localFunctionsPhase)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
internal val varargPhase = makeKonanFileLoweringPhase(
|
internal val varargPhase = makeKonanFileLoweringPhase(
|
||||||
|
|||||||
+1
-2
@@ -335,8 +335,7 @@ internal val allLoweringsPhase = namedIrModulePhase(
|
|||||||
enumClassPhase then
|
enumClassPhase then
|
||||||
delegationPhase then
|
delegationPhase then
|
||||||
callableReferencePhase then
|
callableReferencePhase then
|
||||||
interopPart1Phase then
|
interopPhase then
|
||||||
interopPart2Phase then
|
|
||||||
varargPhase then
|
varargPhase then
|
||||||
compileTimeEvaluatePhase then
|
compileTimeEvaluatePhase then
|
||||||
coroutinesPhase then
|
coroutinesPhase then
|
||||||
|
|||||||
+14
-3
@@ -50,7 +50,18 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
|
|
||||||
internal abstract class BaseInteropIrTransformer(private val context: Context) : IrBuildingTransformer(context) {
|
internal class InteropLowering(context: Context) : FileLoweringPass {
|
||||||
|
// TODO: merge these lowerings.
|
||||||
|
private val part1 = InteropLoweringPart1(context)
|
||||||
|
private val part2 = InteropLoweringPart2(context)
|
||||||
|
|
||||||
|
override fun lower(irFile: IrFile) {
|
||||||
|
part1.lower(irFile)
|
||||||
|
part2.lower(irFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private abstract class BaseInteropIrTransformer(private val context: Context) : IrBuildingTransformer(context) {
|
||||||
|
|
||||||
protected inline fun <T> generateWithStubs(element: IrElement? = null, block: KotlinStubs.() -> T): T =
|
protected inline fun <T> generateWithStubs(element: IrElement? = null, block: KotlinStubs.() -> T): T =
|
||||||
createKotlinStubs(element).block()
|
createKotlinStubs(element).block()
|
||||||
@@ -105,7 +116,7 @@ internal abstract class BaseInteropIrTransformer(private val context: Context) :
|
|||||||
protected abstract fun addTopLevel(declaration: IrDeclaration)
|
protected abstract fun addTopLevel(declaration: IrDeclaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class InteropLoweringPart1(val context: Context) : BaseInteropIrTransformer(context), FileLoweringPass {
|
private class InteropLoweringPart1(val context: Context) : BaseInteropIrTransformer(context), FileLoweringPass {
|
||||||
|
|
||||||
private val symbols get() = context.ir.symbols
|
private val symbols get() = context.ir.symbols
|
||||||
|
|
||||||
@@ -799,7 +810,7 @@ internal class InteropLoweringPart1(val context: Context) : BaseInteropIrTransfo
|
|||||||
/**
|
/**
|
||||||
* Lowers some interop intrinsic calls.
|
* Lowers some interop intrinsic calls.
|
||||||
*/
|
*/
|
||||||
internal class InteropLoweringPart2(val context: Context) : FileLoweringPass {
|
private class InteropLoweringPart2(val context: Context) : FileLoweringPass {
|
||||||
override fun lower(irFile: IrFile) {
|
override fun lower(irFile: IrFile) {
|
||||||
val transformer = InteropTransformer(context, irFile)
|
val transformer = InteropTransformer(context, irFile)
|
||||||
irFile.transformChildrenVoid(transformer)
|
irFile.transformChildrenVoid(transformer)
|
||||||
|
|||||||
Reference in New Issue
Block a user