IR: a flag to GeneratorExtensions to control IR deserialization
There is no need to search for IR embedded in toplevel classes when none is expected (in npon-JVM backends or when -Xserialize-ir is not set).
This commit is contained in:
committed by
TeamCityServer
parent
ec1c97c684
commit
1c4466951f
+4
-1
@@ -306,7 +306,10 @@ object KotlinToJVMBytecodeCompiler {
|
||||
)
|
||||
.codegenFactory(
|
||||
if (configuration.getBoolean(JVMConfigurationKeys.IR)) JvmIrCodegenFactory(
|
||||
configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases)
|
||||
configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases),
|
||||
jvmGeneratorExtensions = JvmGeneratorExtensionsImpl(
|
||||
irDeserializationEnabled = configuration.getBoolean(JVMConfigurationKeys.SERIALIZE_IR)
|
||||
)
|
||||
) else DefaultCodegenFactory
|
||||
)
|
||||
.withModule(module)
|
||||
|
||||
+4
-3
@@ -31,8 +31,6 @@ import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
|
||||
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
import org.jetbrains.kotlin.ir.util.constructors
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||
@@ -61,7 +59,10 @@ import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.typeUtil.replaceAnnotations
|
||||
|
||||
open class JvmGeneratorExtensionsImpl(private val generateFacades: Boolean = true) : GeneratorExtensions(), JvmGeneratorExtensions {
|
||||
open class JvmGeneratorExtensionsImpl(
|
||||
private val generateFacades: Boolean = true,
|
||||
override val irDeserializationEnabled: Boolean = false,
|
||||
) : GeneratorExtensions(), JvmGeneratorExtensions {
|
||||
override val classNameOverride: MutableMap<IrClass, JvmClassName> = mutableMapOf()
|
||||
|
||||
override val samConversion: SamConversion
|
||||
|
||||
@@ -109,6 +109,7 @@ class IrLazyFunction(
|
||||
get() = (descriptor as? DescriptorWithContainerSource)?.containerSource
|
||||
|
||||
private fun tryLoadIr(): Boolean {
|
||||
if (!stubGenerator.extensions.irDeserializationEnabled) return false
|
||||
if (!isInline || isFakeOverride) return false
|
||||
val toplevel = getToplevel()
|
||||
return (toplevel as? DeserializableClass)?.loadIr() ?: false
|
||||
|
||||
@@ -7,11 +7,9 @@ package org.jetbrains.kotlin.ir.util
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
|
||||
@@ -57,6 +55,8 @@ open class StubGeneratorExtensions {
|
||||
companion object Instance : EnhancedNullability()
|
||||
}
|
||||
|
||||
open val irDeserializationEnabled: Boolean = false
|
||||
|
||||
open val flexibleNullabilityAnnotationConstructor: IrConstructor?
|
||||
get() = null
|
||||
|
||||
|
||||
+6
-1
@@ -6,11 +6,13 @@
|
||||
package org.jetbrains.kotlin.test.frontend.classic
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
|
||||
import org.jetbrains.kotlin.backend.jvm.jvmPhases
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||
import org.jetbrains.kotlin.test.model.BackendKinds
|
||||
@@ -37,7 +39,10 @@ class ClassicFrontend2IrConverter(
|
||||
|
||||
val files = psiFiles.values.toList()
|
||||
val phaseConfig = configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases)
|
||||
val codegenFactory = JvmIrCodegenFactory(phaseConfig)
|
||||
val codegenFactory = JvmIrCodegenFactory(
|
||||
phaseConfig,
|
||||
jvmGeneratorExtensions = JvmGeneratorExtensionsImpl(irDeserializationEnabled = configuration.getBoolean(JVMConfigurationKeys.SERIALIZE_IR))
|
||||
)
|
||||
val state = GenerationState.Builder(
|
||||
project, ClassBuilderFactories.TEST, analysisResult.moduleDescriptor, analysisResult.bindingContext,
|
||||
files, configuration
|
||||
|
||||
Reference in New Issue
Block a user