Refactor psi2irPhase in Native compiler according to bf910f92 commit in
Kotlin (cherry picked from commit 0995b351eeb5d147074f038892e0aa17eb068302)
This commit is contained in:
committed by
Vasily Levchenko
parent
0b8f5746b0
commit
bd0396c71e
+16
-11
@@ -1,8 +1,8 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan
|
package org.jetbrains.kotlin.backend.konan
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.*
|
import org.jetbrains.kotlin.backend.common.*
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.*
|
import org.jetbrains.kotlin.backend.common.phaser.*
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
|
import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer
|
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer
|
||||||
@@ -142,6 +142,21 @@ internal val psiToIrPhase = konanUnitPhase(
|
|||||||
Psi2IrConfiguration(false))
|
Psi2IrConfiguration(false))
|
||||||
val generatorContext = translator.createGeneratorContext(moduleDescriptor, bindingContext, symbolTable)
|
val generatorContext = translator.createGeneratorContext(moduleDescriptor, bindingContext, symbolTable)
|
||||||
|
|
||||||
|
translator.addPostprocessingStep { module ->
|
||||||
|
val extensions = IrGenerationExtension.getInstances(config.project)
|
||||||
|
val pluginContext = IrPluginContext(
|
||||||
|
generatorContext.moduleDescriptor,
|
||||||
|
generatorContext.bindingContext,
|
||||||
|
generatorContext.languageVersionSettings,
|
||||||
|
generatorContext.symbolTable,
|
||||||
|
generatorContext.typeTranslator,
|
||||||
|
generatorContext.irBuiltIns
|
||||||
|
)
|
||||||
|
extensions.forEach { extension ->
|
||||||
|
extension.generate(module, pluginContext)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val forwardDeclarationsModuleDescriptor = moduleDescriptor.allDependencyModules.firstOrNull { it.isForwardDeclarationModule }
|
val forwardDeclarationsModuleDescriptor = moduleDescriptor.allDependencyModules.firstOrNull { it.isForwardDeclarationModule }
|
||||||
|
|
||||||
val modulesWithoutDCE = moduleDescriptor.allDependencyModules
|
val modulesWithoutDCE = moduleDescriptor.allDependencyModules
|
||||||
@@ -200,16 +215,6 @@ internal val psiToIrPhase = konanUnitPhase(
|
|||||||
irModules = deserializer.modules.filterValues { llvmModuleSpecification.containsModule(it) }
|
irModules = deserializer.modules.filterValues { llvmModuleSpecification.containsModule(it) }
|
||||||
ir.symbols = symbols
|
ir.symbols = symbols
|
||||||
|
|
||||||
val extensions = IrGenerationExtension.getInstances(config.project)
|
|
||||||
extensions.forEach { extension ->
|
|
||||||
extension.generate(irModule!!, IrPluginContext(irModule!!.descriptor,
|
|
||||||
bindingContext, config.languageVersionSettings,
|
|
||||||
symbolTable,
|
|
||||||
generatorContext.typeTranslator,
|
|
||||||
irBuiltIns
|
|
||||||
))
|
|
||||||
|
|
||||||
}
|
|
||||||
functionIrClassFactory.module =
|
functionIrClassFactory.module =
|
||||||
(listOf(irModule!!) + deserializer.modules.values)
|
(listOf(irModule!!) + deserializer.modules.values)
|
||||||
.single { it.descriptor.isKonanStdlib() }
|
.single { it.descriptor.isKonanStdlib() }
|
||||||
|
|||||||
Reference in New Issue
Block a user