[JS IR] Use non-persistent IR for non-dce-driven mode

Eliminate overhead of persistency that we don't use in this mode.
This commit is contained in:
Svyatoslav Kuzmich
2021-01-25 19:11:44 +03:00
parent 02615ec569
commit 4bde884844
3 changed files with 8 additions and 4 deletions
+1
View File
@@ -13,6 +13,7 @@ dependencies {
compile(project(":compiler:ir.serialization.common"))
compile(project(":compiler:ir.serialization.js"))
compile(project(":compiler:ir.tree.persistent"))
compile(project(":compiler:ir.tree.impl"))
compile(project(":js:js.ast"))
compile(project(":js:js.frontend"))
@@ -20,8 +20,8 @@ import org.jetbrains.kotlin.ir.backend.js.utils.*
import org.jetbrains.kotlin.ir.builders.declarations.addFunction
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol
@@ -45,6 +45,7 @@ class JsIrBackendContext(
override val scriptMode: Boolean = false,
override val es6mode: Boolean = false,
val propertyLazyInitialization: Boolean = false,
override val irFactory: IrFactory = IrFactoryImpl
) : JsCommonBackendContext {
val fileToInitializationFuns: MutableMap<IrFile, IrSimpleFunction?> = mutableMapOf()
val fileToInitializerPureness: MutableMap<IrFile, Boolean> = mutableMapOf()
@@ -55,8 +56,6 @@ class JsIrBackendContext(
override var inVerbosePhase: Boolean = false
override val irFactory: IrFactory = PersistentIrFactory
val devMode = configuration[JSConfigurationKeys.DEVELOPER_MODE] ?: false
val errorPolicy = configuration[JSConfigurationKeys.ERROR_TOLERANCE_POLICY] ?: ErrorTolerancePolicy.DEFAULT
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransf
import org.jetbrains.kotlin.ir.backend.js.utils.NameTables
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.declarations.StageController
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory
import org.jetbrains.kotlin.ir.declarations.stageController
import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
@@ -53,8 +54,10 @@ fun compile(
): CompilerResult {
stageController = StageController()
val irFactory = if (dceDriven) PersistentIrFactory else IrFactoryImpl
val (moduleFragment: IrModuleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) =
loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies, PersistentIrFactory)
loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies, irFactory)
val moduleDescriptor = moduleFragment.descriptor
@@ -72,6 +75,7 @@ fun compile(
configuration,
es6mode = es6mode,
propertyLazyInitialization = propertyLazyInitialization,
irFactory = irFactory
)
// Load declarations referenced during `context` initialization