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
|
||||
|
||||
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.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.common.phaser.*
|
||||
import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMonolithicSerializer
|
||||
@@ -142,6 +142,21 @@ internal val psiToIrPhase = konanUnitPhase(
|
||||
Psi2IrConfiguration(false))
|
||||
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 modulesWithoutDCE = moduleDescriptor.allDependencyModules
|
||||
@@ -200,16 +215,6 @@ internal val psiToIrPhase = konanUnitPhase(
|
||||
irModules = deserializer.modules.filterValues { llvmModuleSpecification.containsModule(it) }
|
||||
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 =
|
||||
(listOf(irModule!!) + deserializer.modules.values)
|
||||
.single { it.descriptor.isKonanStdlib() }
|
||||
|
||||
Reference in New Issue
Block a user