[K2] Create and add EvaluatedConstTracker in configuration
This commit is contained in:
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
|||||||
import org.jetbrains.kotlin.cli.common.prepareJsSessions
|
import org.jetbrains.kotlin.cli.common.prepareJsSessions
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
||||||
import org.jetbrains.kotlin.diagnostics.impl.PendingDiagnosticsCollectorWithSuppress
|
import org.jetbrains.kotlin.diagnostics.impl.PendingDiagnosticsCollectorWithSuppress
|
||||||
@@ -132,7 +133,9 @@ fun transformFirToIr(
|
|||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
Fir2IrConfiguration(
|
Fir2IrConfiguration(
|
||||||
languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings,
|
languageVersionSettings = moduleStructure.compilerConfiguration.languageVersionSettings,
|
||||||
linkViaSignatures = false
|
linkViaSignatures = false,
|
||||||
|
evaluatedConstTracker = moduleStructure.compilerConfiguration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
),
|
),
|
||||||
IrGenerationExtension.getInstances(moduleStructure.project),
|
IrGenerationExtension.getInstances(moduleStructure.project),
|
||||||
signatureComposerCreator = null,
|
signatureComposerCreator = null,
|
||||||
|
|||||||
+4
-1
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
|
|||||||
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
|
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
|
||||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.*
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
@@ -155,7 +156,9 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val fir2IrExtensions = JvmFir2IrExtensions(moduleConfiguration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = moduleConfiguration.languageVersionSettings,
|
languageVersionSettings = moduleConfiguration.languageVersionSettings,
|
||||||
linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
linkViaSignatures = moduleConfiguration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
||||||
|
evaluatedConstTracker = moduleConfiguration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
)
|
)
|
||||||
val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm(
|
val fir2IrAndIrActualizerResult = firResult.convertToIrAndActualizeForJvm(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
@@ -233,7 +234,9 @@ fun convertAnalyzedFirToIr(
|
|||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = input.configuration.languageVersionSettings,
|
languageVersionSettings = input.configuration.languageVersionSettings,
|
||||||
linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES)
|
linkViaSignatures = input.configuration.getBoolean(JVMConfigurationKeys.LINK_VIA_SIGNATURES),
|
||||||
|
evaluatedConstTracker = input.configuration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
)
|
)
|
||||||
val (irModuleFragment, components, pluginContext, irActualizedResult) =
|
val (irModuleFragment, components, pluginContext, irActualizedResult) =
|
||||||
analysisResults.convertToIrAndActualizeForJvm(
|
analysisResults.convertToIrAndActualizeForJvm(
|
||||||
|
|||||||
@@ -73,6 +73,15 @@ public class CompilerConfiguration {
|
|||||||
map.put(key.ideaKey, value);
|
map.put(key.ideaKey, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T> T putIfAbsent(@NotNull CompilerConfigurationKey<T> key, @NotNull T value) {
|
||||||
|
T data = get(key);
|
||||||
|
if (data != null) return data;
|
||||||
|
|
||||||
|
checkReadOnly();
|
||||||
|
put(key, value);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
public <T> void putIfNotNull(@NotNull CompilerConfigurationKey<T> key, @Nullable T value) {
|
public <T> void putIfNotNull(@NotNull CompilerConfigurationKey<T> key, @Nullable T value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
put(key, value);
|
put(key, value);
|
||||||
|
|||||||
@@ -22,5 +22,5 @@ import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
|||||||
data class Fir2IrConfiguration(
|
data class Fir2IrConfiguration(
|
||||||
val languageVersionSettings: LanguageVersionSettings,
|
val languageVersionSettings: LanguageVersionSettings,
|
||||||
val linkViaSignatures: Boolean,
|
val linkViaSignatures: Boolean,
|
||||||
val evaluatedConstTracker: EvaluatedConstTracker? = null,
|
val evaluatedConstTracker: EvaluatedConstTracker,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ class Fir2IrConverter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
evaluateConstants(irModuleFragment)
|
evaluateConstants(irModuleFragment, configuration)
|
||||||
|
|
||||||
if (irGenerationExtensions.isNotEmpty()) {
|
if (irGenerationExtensions.isNotEmpty()) {
|
||||||
val pluginContext = Fir2IrPluginContext(components, irModuleFragment.descriptor)
|
val pluginContext = Fir2IrPluginContext(components, irModuleFragment.descriptor)
|
||||||
@@ -419,7 +419,7 @@ class Fir2IrConverter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private fun evaluateConstants(irModuleFragment: IrModuleFragment) {
|
private fun evaluateConstants(irModuleFragment: IrModuleFragment, fir2IrConfiguration: Fir2IrConfiguration) {
|
||||||
val firModuleDescriptor = irModuleFragment.descriptor as? FirModuleDescriptor
|
val firModuleDescriptor = irModuleFragment.descriptor as? FirModuleDescriptor
|
||||||
val targetPlatform = firModuleDescriptor?.platform
|
val targetPlatform = firModuleDescriptor?.platform
|
||||||
val languageVersionSettings = firModuleDescriptor?.session?.languageVersionSettings
|
val languageVersionSettings = firModuleDescriptor?.session?.languageVersionSettings
|
||||||
@@ -433,7 +433,9 @@ class Fir2IrConverter(
|
|||||||
val mode = if (intrinsicConstEvaluation) EvaluationMode.ONLY_INTRINSIC_CONST else EvaluationMode.ONLY_BUILTINS
|
val mode = if (intrinsicConstEvaluation) EvaluationMode.ONLY_INTRINSIC_CONST else EvaluationMode.ONLY_BUILTINS
|
||||||
irModuleFragment.files.forEach {
|
irModuleFragment.files.forEach {
|
||||||
val transformer = IrConstTransformer(
|
val transformer = IrConstTransformer(
|
||||||
interpreter, it, mode = mode
|
interpreter, it,
|
||||||
|
mode = mode,
|
||||||
|
evaluatedConstTracker = fir2IrConfiguration.evaluatedConstTracker
|
||||||
)
|
)
|
||||||
it.transformChildren(transformer, null)
|
it.transformChildren(transformer, null)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-1
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.*
|
|||||||
import org.jetbrains.kotlin.cli.jvm.config.*
|
import org.jetbrains.kotlin.cli.jvm.config.*
|
||||||
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
|
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.*
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
||||||
@@ -276,7 +277,9 @@ class IncrementalFirJvmCompilerRunner(
|
|||||||
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
val extensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
linkViaSignatures = false
|
linkViaSignatures = false,
|
||||||
|
evaluatedConstTracker = configuration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
)
|
)
|
||||||
val irGenerationExtensions =
|
val irGenerationExtensions =
|
||||||
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
||||||
|
|||||||
+5
-1
@@ -9,9 +9,11 @@ import org.jetbrains.kotlin.KtSourceFile
|
|||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
@@ -149,7 +151,9 @@ fun AbstractFirAnalyzerFacade.convertToJsIr(
|
|||||||
|
|
||||||
val fir2IrConfiguration = Fir2IrConfiguration(
|
val fir2IrConfiguration = Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
linkViaSignatures = false
|
linkViaSignatures = false,
|
||||||
|
evaluatedConstTracker = configuration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
)
|
)
|
||||||
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
return Fir2IrConverter.createModuleFragmentWithSignaturesIfNeeded(
|
||||||
session, scopeSession, firFiles.toList(),
|
session, scopeSession, firFiles.toList(),
|
||||||
|
|||||||
+8
-2
@@ -17,7 +17,11 @@ import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots
|
import org.jetbrains.kotlin.cli.jvm.config.jvmModularRoots
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.container.topologicalSort
|
import org.jetbrains.kotlin.container.topologicalSort
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
||||||
@@ -306,7 +310,9 @@ open class FirFrontendFacade(
|
|||||||
moduleBasedSession,
|
moduleBasedSession,
|
||||||
Fir2IrConfiguration(
|
Fir2IrConfiguration(
|
||||||
languageVersionSettings = module.languageVersionSettings,
|
languageVersionSettings = module.languageVersionSettings,
|
||||||
linkViaSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE
|
linkViaSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE,
|
||||||
|
evaluatedConstTracker = compilerConfigurationProvider.getCompilerConfiguration(module)
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
),
|
),
|
||||||
ktFiles,
|
ktFiles,
|
||||||
lightTreeFiles,
|
lightTreeFiles,
|
||||||
|
|||||||
+8
-8
@@ -5,9 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.test.runners.ir.interpreter
|
package org.jetbrains.kotlin.test.runners.ir.interpreter
|
||||||
|
|
||||||
import org.jetbrains.kotlin.config.AnalysisFlag
|
import org.jetbrains.kotlin.config.*
|
||||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.config.LanguageVersion
|
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.test.FirParser
|
import org.jetbrains.kotlin.test.FirParser
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
@@ -18,13 +17,9 @@ import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirective
|
|||||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||||
import org.jetbrains.kotlin.test.directives.configureFirParser
|
import org.jetbrains.kotlin.test.directives.configureFirParser
|
||||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||||
import org.jetbrains.kotlin.test.model.BinaryKind
|
import org.jetbrains.kotlin.test.model.*
|
||||||
import org.jetbrains.kotlin.test.model.DependencyKind
|
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKind
|
|
||||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
|
||||||
import org.jetbrains.kotlin.test.preprocessors.IrInterpreterImplicitKotlinImports
|
import org.jetbrains.kotlin.test.preprocessors.IrInterpreterImplicitKotlinImports
|
||||||
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
|
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
|
||||||
import org.jetbrains.kotlin.test.runners.codegen.FirPsiCodegenTest
|
|
||||||
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
|
||||||
@@ -102,4 +97,9 @@ class IrInterpreterEnvironmentConfigurator(testServices: TestServices) : Environ
|
|||||||
): Map<AnalysisFlag<*>, Any?> {
|
): Map<AnalysisFlag<*>, Any?> {
|
||||||
return mapOf(AnalysisFlags.builtInsFromSources to true)
|
return mapOf(AnalysisFlags.builtInsFromSources to true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) {
|
||||||
|
super.configureCompilerConfiguration(configuration, module)
|
||||||
|
configuration.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.fir.FirAnalyzerFacade
|
import org.jetbrains.kotlin.fir.FirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
|
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
import org.jetbrains.kotlin.fir.backend.Fir2IrCommonMemberStorage
|
||||||
@@ -124,7 +125,9 @@ object GenerationUtils {
|
|||||||
session,
|
session,
|
||||||
Fir2IrConfiguration(
|
Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
linkViaSignatures = false
|
linkViaSignatures = false,
|
||||||
|
evaluatedConstTracker = configuration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
),
|
),
|
||||||
files,
|
files,
|
||||||
emptyList(),
|
emptyList(),
|
||||||
|
|||||||
@@ -10,9 +10,20 @@ import java.util.concurrent.ConcurrentHashMap
|
|||||||
abstract class EvaluatedConstTracker {
|
abstract class EvaluatedConstTracker {
|
||||||
abstract fun save(start: Int, end: Int, constant: ConstantValue<*>)
|
abstract fun save(start: Int, end: Int, constant: ConstantValue<*>)
|
||||||
abstract fun load(start: Int, end: Int): ConstantValue<*>?
|
abstract fun load(start: Int, end: Int): ConstantValue<*>?
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
/**
|
||||||
|
* Right now there are two places where we want to create this tracker.
|
||||||
|
* 1. Right before `fir2ir` phase. We need to store evaluated values to use them later in const value serialization.
|
||||||
|
* 2. In interpreter's tests for all IR backends. This is needed ONLY for tests and cover case when we run K1 IR compiler.
|
||||||
|
*/
|
||||||
|
fun create(): EvaluatedConstTracker {
|
||||||
|
return DefaultEvaluatedConstTracker()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DefaultEvaluatedConstTracker : EvaluatedConstTracker() {
|
private class DefaultEvaluatedConstTracker : EvaluatedConstTracker() {
|
||||||
private val storage = ConcurrentHashMap<Pair<Int, Int>, ConstantValue<*>>()
|
private val storage = ConcurrentHashMap<Pair<Int, Int>, ConstantValue<*>>()
|
||||||
|
|
||||||
override fun save(start: Int, end: Int, constant: ConstantValue<*>) {
|
override fun save(start: Int, end: Int, constant: ConstantValue<*>) {
|
||||||
|
|||||||
+5
-1
@@ -15,7 +15,9 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
|||||||
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter
|
import org.jetbrains.kotlin.cli.common.fir.FirDiagnosticsCompilerResultsReporter
|
||||||
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentTypeTransformer
|
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentTypeTransformer
|
||||||
import org.jetbrains.kotlin.descriptors.isEmpty
|
import org.jetbrains.kotlin.descriptors.isEmpty
|
||||||
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
|
import org.jetbrains.kotlin.descriptors.konan.isNativeStdlib
|
||||||
@@ -75,7 +77,9 @@ internal fun PhaseContext.fir2Ir(
|
|||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
Fir2IrConfiguration(
|
Fir2IrConfiguration(
|
||||||
languageVersionSettings = configuration.languageVersionSettings,
|
languageVersionSettings = configuration.languageVersionSettings,
|
||||||
linkViaSignatures = false
|
linkViaSignatures = false,
|
||||||
|
evaluatedConstTracker = configuration
|
||||||
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
),
|
),
|
||||||
IrGenerationExtension.getInstances(config.project),
|
IrGenerationExtension.getInstances(config.project),
|
||||||
signatureComposerCreator = null,
|
signatureComposerCreator = null,
|
||||||
|
|||||||
Reference in New Issue
Block a user