[JS IC] Don't persist temporary copies of inline functions
- drop special `IrValueParameterPublicSymbol` - drop special `IrAnonymousInitializerPublicSymbolImpl` - drop hacky `useGlobalSignatures`
This commit is contained in:
committed by
teamcityserver
parent
b1251c1716
commit
b1eeb1fb27
+23
-11
@@ -93,6 +93,8 @@ class FunctionInlining(
|
|||||||
|
|
||||||
private var containerScope: ScopeWithIr? = null
|
private var containerScope: ScopeWithIr? = null
|
||||||
|
|
||||||
|
private var deepInline: Boolean = false
|
||||||
|
|
||||||
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
||||||
// TODO container: IrSymbolDeclaration
|
// TODO container: IrSymbolDeclaration
|
||||||
containerScope = createScope(container as IrSymbolOwner)
|
containerScope = createScope(container as IrSymbolOwner)
|
||||||
@@ -155,16 +157,6 @@ class FunctionInlining(
|
|||||||
|
|
||||||
fun inline() = inlineFunction(callSite, callee, true)
|
fun inline() = inlineFunction(callSite, callee, true)
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: JVM inliner crashed on attempt inline this function from transform.kt with:
|
|
||||||
* j.l.IllegalStateException: Couldn't obtain compiled function body for
|
|
||||||
* public inline fun <reified T : org.jetbrains.kotlin.ir.IrElement> kotlin.collections.MutableList<T>.transform...
|
|
||||||
*/
|
|
||||||
private inline fun <reified T : IrElement> MutableList<T>.transform(transformation: (T) -> IrElement) {
|
|
||||||
forEachIndexed { i, item ->
|
|
||||||
set(i, transformation(item) as T)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun inlineFunction(
|
private fun inlineFunction(
|
||||||
callSite: IrFunctionAccessExpression,
|
callSite: IrFunctionAccessExpression,
|
||||||
@@ -172,9 +164,22 @@ class FunctionInlining(
|
|||||||
performRecursiveInline: Boolean
|
performRecursiveInline: Boolean
|
||||||
): IrReturnableBlock {
|
): IrReturnableBlock {
|
||||||
val copiedCallee = (copyIrElement.copy(callee) as IrFunction).apply {
|
val copiedCallee = (copyIrElement.copy(callee) as IrFunction).apply {
|
||||||
|
|
||||||
|
// It's a hack to overtake another hack in PIR. Due to PersistentIrFactory registers every created declaration
|
||||||
|
// there also get temporary declaration like this which leads to some unclear behaviour. Since I am not aware
|
||||||
|
// enough about PIR internals the simplest way seemed to me is to unregister temporary function. Hope it is going
|
||||||
|
// to be removed ASAP along with registering every PIR declaration.
|
||||||
|
factory.unlistFunction(this)
|
||||||
|
|
||||||
parent = callee.parent
|
parent = callee.parent
|
||||||
if (performRecursiveInline) {
|
if (performRecursiveInline) {
|
||||||
body?.transformChildrenVoid()
|
val old = deepInline
|
||||||
|
try {
|
||||||
|
deepInline = true
|
||||||
|
body?.transformChildrenVoid()
|
||||||
|
} finally {
|
||||||
|
deepInline = old
|
||||||
|
}
|
||||||
valueParameters.forEachIndexed { index, param ->
|
valueParameters.forEachIndexed { index, param ->
|
||||||
if (callSite.getValueArgument(index) == null) {
|
if (callSite.getValueArgument(index) == null) {
|
||||||
// Default values can recursively reference [callee] - transform only needed.
|
// Default values can recursively reference [callee] - transform only needed.
|
||||||
@@ -537,6 +542,13 @@ class FunctionInlining(
|
|||||||
if (argument.isInlinableLambdaArgument) {
|
if (argument.isInlinableLambdaArgument) {
|
||||||
substituteMap[argument.parameter] = argument.argumentExpression
|
substituteMap[argument.parameter] = argument.argumentExpression
|
||||||
(argument.argumentExpression as? IrFunctionReference)?.let { evaluationStatements += evaluateArguments(it) }
|
(argument.argumentExpression as? IrFunctionReference)?.let { evaluationStatements += evaluateArguments(it) }
|
||||||
|
|
||||||
|
(argument.argumentExpression as? IrFunctionExpression)?.let {
|
||||||
|
if (deepInline) {
|
||||||
|
it.function.factory.unlistFunction(it.function)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return@forEach
|
return@forEach
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+37
-5
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
|||||||
import org.jetbrains.kotlin.ir.expressions.persistent.PersistentIrBlockBody
|
import org.jetbrains.kotlin.ir.expressions.persistent.PersistentIrBlockBody
|
||||||
import org.jetbrains.kotlin.ir.expressions.persistent.PersistentIrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.persistent.PersistentIrExpressionBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
import org.jetbrains.kotlin.ir.symbols.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrPublicSymbolBase
|
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -26,9 +25,9 @@ class PersistentIrFactory : IrFactory {
|
|||||||
|
|
||||||
override var stageController = StageController()
|
override var stageController = StageController()
|
||||||
|
|
||||||
val allDeclarations = mutableListOf<IrDeclaration>()
|
val allDeclarations = hashSetOf<IrDeclaration>()
|
||||||
|
|
||||||
val allBodies = mutableListOf<IrBody>()
|
val allBodies = hashSetOf<IrBody>()
|
||||||
|
|
||||||
private fun IrDeclaration.register() {
|
private fun IrDeclaration.register() {
|
||||||
allDeclarations += this
|
allDeclarations += this
|
||||||
@@ -38,6 +37,15 @@ class PersistentIrFactory : IrFactory {
|
|||||||
return (declaration as? PersistentIrDeclarationBase<*>)?.signature ?: declaration.symbol.signature
|
return (declaration as? PersistentIrDeclarationBase<*>)?.signature ?: declaration.symbol.signature
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun unlistFunction(f: IrFunction) {
|
||||||
|
allDeclarations.remove(f)
|
||||||
|
f.dispatchReceiverParameter?.let { allDeclarations.remove(it) }
|
||||||
|
f.extensionReceiverParameter?.let { allDeclarations.remove(it) }
|
||||||
|
allDeclarations.removeAll(f.valueParameters)
|
||||||
|
allDeclarations.removeAll(f.typeParameters)
|
||||||
|
allBodies.remove(f.body)
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("UNUSED_PARAMETER")
|
@Suppress("UNUSED_PARAMETER")
|
||||||
internal fun currentSignature(declaration: IrDeclaration): IdSignature? {
|
internal fun currentSignature(declaration: IrDeclaration): IdSignature? {
|
||||||
val parentSig = stageController.currentDeclaration?.let { declarationSignature(it) } ?: return null
|
val parentSig = stageController.currentDeclaration?.let { declarationSignature(it) } ?: return null
|
||||||
@@ -125,7 +133,19 @@ class PersistentIrFactory : IrFactory {
|
|||||||
isExternal: Boolean,
|
isExternal: Boolean,
|
||||||
isStatic: Boolean,
|
isStatic: Boolean,
|
||||||
): IrField =
|
): IrField =
|
||||||
PersistentIrField(startOffset, endOffset, origin, symbol, name, type, visibility, isFinal, isExternal, isStatic, this).also { it.register() }
|
PersistentIrField(
|
||||||
|
startOffset,
|
||||||
|
endOffset,
|
||||||
|
origin,
|
||||||
|
symbol,
|
||||||
|
name,
|
||||||
|
type,
|
||||||
|
visibility,
|
||||||
|
isFinal,
|
||||||
|
isExternal,
|
||||||
|
isStatic,
|
||||||
|
this
|
||||||
|
).also { it.register() }
|
||||||
|
|
||||||
override fun createFunction(
|
override fun createFunction(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -268,7 +288,19 @@ class PersistentIrFactory : IrFactory {
|
|||||||
isAssignable: Boolean
|
isAssignable: Boolean
|
||||||
): IrValueParameter =
|
): IrValueParameter =
|
||||||
PersistentIrValueParameter(
|
PersistentIrValueParameter(
|
||||||
startOffset, endOffset, origin, symbol, name, index, type, varargElementType, isCrossinline, isNoinline, isHidden, isAssignable, this
|
startOffset,
|
||||||
|
endOffset,
|
||||||
|
origin,
|
||||||
|
symbol,
|
||||||
|
name,
|
||||||
|
index,
|
||||||
|
type,
|
||||||
|
varargElementType,
|
||||||
|
isCrossinline,
|
||||||
|
isNoinline,
|
||||||
|
isHidden,
|
||||||
|
isAssignable,
|
||||||
|
this
|
||||||
).also { it.register() }
|
).also { it.register() }
|
||||||
|
|
||||||
override fun createExpressionBody(
|
override fun createExpressionBody(
|
||||||
|
|||||||
@@ -239,4 +239,6 @@ interface IrFactory {
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
initializer: IrBlockBody.() -> Unit,
|
initializer: IrBlockBody.() -> Unit,
|
||||||
): IrBlockBody
|
): IrBlockBody
|
||||||
|
|
||||||
|
fun unlistFunction(f: IrFunction) {}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-3
@@ -27,8 +27,7 @@ abstract class BasicIrModuleDeserializer(
|
|||||||
override val klib: IrLibrary,
|
override val klib: IrLibrary,
|
||||||
override val strategy: DeserializationStrategy,
|
override val strategy: DeserializationStrategy,
|
||||||
libraryAbiVersion: KotlinAbiVersion,
|
libraryAbiVersion: KotlinAbiVersion,
|
||||||
private val containsErrorCode: Boolean = false,
|
private val containsErrorCode: Boolean = false
|
||||||
private val useGlobalSignatures: Boolean = false,
|
|
||||||
) :
|
) :
|
||||||
IrModuleDeserializer(moduleDescriptor, libraryAbiVersion) {
|
IrModuleDeserializer(moduleDescriptor, libraryAbiVersion) {
|
||||||
|
|
||||||
@@ -119,7 +118,6 @@ abstract class BasicIrModuleDeserializer(
|
|||||||
allowErrorNodes,
|
allowErrorNodes,
|
||||||
strategy.inlineBodies,
|
strategy.inlineBodies,
|
||||||
moduleDeserializer,
|
moduleDeserializer,
|
||||||
useGlobalSignatures,
|
|
||||||
linker::handleNoModuleDeserializerFound,
|
linker::handleNoModuleDeserializerFound,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
-2
@@ -66,7 +66,6 @@ class FileDeserializationState(
|
|||||||
allowErrorNodes: Boolean,
|
allowErrorNodes: Boolean,
|
||||||
deserializeInlineFunctions: Boolean,
|
deserializeInlineFunctions: Boolean,
|
||||||
moduleDeserializer: IrModuleDeserializer,
|
moduleDeserializer: IrModuleDeserializer,
|
||||||
useGlobalSignatures: Boolean,
|
|
||||||
handleNoModuleDeserializerFound: (IdSignature, ModuleDescriptor, Collection<IrModuleDeserializer>) -> IrModuleDeserializer,
|
handleNoModuleDeserializerFound: (IdSignature, ModuleDescriptor, Collection<IrModuleDeserializer>) -> IrModuleDeserializer,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@@ -76,7 +75,6 @@ class FileDeserializationState(
|
|||||||
fileProto.actualList,
|
fileProto.actualList,
|
||||||
::addIdSignature,
|
::addIdSignature,
|
||||||
linker::handleExpectActualMapping,
|
linker::handleExpectActualMapping,
|
||||||
useGlobalSignatures = useGlobalSignatures,
|
|
||||||
) { idSig, symbolKind ->
|
) { idSig, symbolKind ->
|
||||||
|
|
||||||
val topLevelSig = idSig.topLevelSignature()
|
val topLevelSig = idSig.topLevelSignature()
|
||||||
|
|||||||
+11
-19
@@ -8,12 +8,14 @@ package org.jetbrains.kotlin.backend.common.serialization
|
|||||||
import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData
|
import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.Actual
|
import org.jetbrains.kotlin.backend.common.serialization.proto.Actual
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature.IdSigCase.*
|
import org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature.IdSigCase.*
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
||||||
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
import org.jetbrains.kotlin.ir.symbols.impl.IrAnonymousInitializerSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.*
|
import org.jetbrains.kotlin.ir.symbols.impl.IrLocalDelegatedPropertySymbolImpl
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.impl.IrVariableSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.protobuf.CodedInputStream
|
import org.jetbrains.kotlin.protobuf.CodedInputStream
|
||||||
import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite
|
import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite
|
||||||
@@ -34,7 +36,6 @@ class IrSymbolDeserializer(
|
|||||||
val enqueueLocalTopLevelDeclaration: (IdSignature) -> Unit,
|
val enqueueLocalTopLevelDeclaration: (IdSignature) -> Unit,
|
||||||
val handleExpectActualMapping: (IdSignature, IrSymbol) -> IrSymbol,
|
val handleExpectActualMapping: (IdSignature, IrSymbol) -> IrSymbol,
|
||||||
private val enqueueAllDeclarations: Boolean = false,
|
private val enqueueAllDeclarations: Boolean = false,
|
||||||
private val useGlobalSignatures: Boolean = false,
|
|
||||||
val deserializedSymbols: MutableMap<IdSignature, IrSymbol> = mutableMapOf(), // Per-file signature cache. TODO: do we really need it?
|
val deserializedSymbols: MutableMap<IdSignature, IrSymbol> = mutableMapOf(), // Per-file signature cache. TODO: do we really need it?
|
||||||
val deserializePublicSymbol: (IdSignature, BinarySymbolData.SymbolKind) -> IrSymbol,
|
val deserializePublicSymbol: (IdSignature, BinarySymbolData.SymbolKind) -> IrSymbol,
|
||||||
) {
|
) {
|
||||||
@@ -51,7 +52,7 @@ class IrSymbolDeserializer(
|
|||||||
|
|
||||||
private fun referenceDeserializedSymbol(symbolKind: BinarySymbolData.SymbolKind, idSig: IdSignature): IrSymbol = symbolTable.run {
|
private fun referenceDeserializedSymbol(symbolKind: BinarySymbolData.SymbolKind, idSig: IdSignature): IrSymbol = symbolTable.run {
|
||||||
when (symbolKind) {
|
when (symbolKind) {
|
||||||
BinarySymbolData.SymbolKind.ANONYMOUS_INIT_SYMBOL -> if (useGlobalSignatures) IrAnonymousInitializerPublicSymbolImpl(idSig) else IrAnonymousInitializerSymbolImpl()
|
BinarySymbolData.SymbolKind.ANONYMOUS_INIT_SYMBOL -> IrAnonymousInitializerSymbolImpl()
|
||||||
BinarySymbolData.SymbolKind.CLASS_SYMBOL -> referenceClassFromLinker(idSig)
|
BinarySymbolData.SymbolKind.CLASS_SYMBOL -> referenceClassFromLinker(idSig)
|
||||||
BinarySymbolData.SymbolKind.CONSTRUCTOR_SYMBOL -> referenceConstructorFromLinker(idSig)
|
BinarySymbolData.SymbolKind.CONSTRUCTOR_SYMBOL -> referenceConstructorFromLinker(idSig)
|
||||||
BinarySymbolData.SymbolKind.TYPE_PARAMETER_SYMBOL -> referenceGlobalTypeParameterFromLinker(idSig)
|
BinarySymbolData.SymbolKind.TYPE_PARAMETER_SYMBOL -> referenceGlobalTypeParameterFromLinker(idSig)
|
||||||
@@ -62,8 +63,8 @@ class IrSymbolDeserializer(
|
|||||||
BinarySymbolData.SymbolKind.TYPEALIAS_SYMBOL -> referenceTypeAliasFromLinker(idSig)
|
BinarySymbolData.SymbolKind.TYPEALIAS_SYMBOL -> referenceTypeAliasFromLinker(idSig)
|
||||||
BinarySymbolData.SymbolKind.PROPERTY_SYMBOL -> referencePropertyFromLinker(idSig)
|
BinarySymbolData.SymbolKind.PROPERTY_SYMBOL -> referencePropertyFromLinker(idSig)
|
||||||
BinarySymbolData.SymbolKind.VARIABLE_SYMBOL -> IrVariableSymbolImpl()
|
BinarySymbolData.SymbolKind.VARIABLE_SYMBOL -> IrVariableSymbolImpl()
|
||||||
BinarySymbolData.SymbolKind.VALUE_PARAMETER_SYMBOL -> if (useGlobalSignatures) IrValueParameterPublicSymbolImpl(idSig) else IrValueParameterSymbolImpl()
|
BinarySymbolData.SymbolKind.VALUE_PARAMETER_SYMBOL -> IrValueParameterSymbolImpl()
|
||||||
BinarySymbolData.SymbolKind.RECEIVER_PARAMETER_SYMBOL -> if (useGlobalSignatures) IrValueParameterPublicSymbolImpl(idSig) else IrValueParameterSymbolImpl()
|
BinarySymbolData.SymbolKind.RECEIVER_PARAMETER_SYMBOL -> IrValueParameterSymbolImpl()
|
||||||
BinarySymbolData.SymbolKind.LOCAL_DELEGATED_PROPERTY_SYMBOL ->
|
BinarySymbolData.SymbolKind.LOCAL_DELEGATED_PROPERTY_SYMBOL ->
|
||||||
IrLocalDelegatedPropertySymbolImpl()
|
IrLocalDelegatedPropertySymbolImpl()
|
||||||
BinarySymbolData.SymbolKind.FILE_SYMBOL -> (idSig as IdSignature.FileSignature).fileSymbol
|
BinarySymbolData.SymbolKind.FILE_SYMBOL -> (idSig as IdSignature.FileSignature).fileSymbol
|
||||||
@@ -200,12 +201,3 @@ class IrSymbolDeserializer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: make internal and move to deserializer
|
|
||||||
private class IrAnonymousInitializerPublicSymbolImpl(sig: IdSignature, descriptor: ClassDescriptor? = null) :
|
|
||||||
IrBindablePublicSymbolBase<ClassDescriptor, IrAnonymousInitializer>(sig, descriptor),
|
|
||||||
IrAnonymousInitializerSymbol
|
|
||||||
|
|
||||||
private class IrValueParameterPublicSymbolImpl(sig: IdSignature, descriptor: ParameterDescriptor? = null) :
|
|
||||||
IrBindablePublicSymbolBase<ParameterDescriptor, IrValueParameter>(sig, descriptor),
|
|
||||||
IrValueParameterSymbol
|
|
||||||
|
|||||||
-3
@@ -35,7 +35,6 @@ class IcFileDeserializer(
|
|||||||
allowErrorNodes: Boolean,
|
allowErrorNodes: Boolean,
|
||||||
deserializeInlineFunctions: Boolean,
|
deserializeInlineFunctions: Boolean,
|
||||||
val moduleDeserializer: IrModuleDeserializer,
|
val moduleDeserializer: IrModuleDeserializer,
|
||||||
useGlobalSignatures: Boolean,
|
|
||||||
val handleNoModuleDeserializerFound: (IdSignature, ModuleDescriptor, Collection<IrModuleDeserializer>) -> IrModuleDeserializer,
|
val handleNoModuleDeserializerFound: (IdSignature, ModuleDescriptor, Collection<IrModuleDeserializer>) -> IrModuleDeserializer,
|
||||||
val originalEnqueue: IdSignature.(IcFileDeserializer) -> Unit,
|
val originalEnqueue: IdSignature.(IcFileDeserializer) -> Unit,
|
||||||
val icFileData: SerializedIcDataForFile,
|
val icFileData: SerializedIcDataForFile,
|
||||||
@@ -56,7 +55,6 @@ class IcFileDeserializer(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
linker::handleExpectActualMapping,
|
linker::handleExpectActualMapping,
|
||||||
useGlobalSignatures = useGlobalSignatures,
|
|
||||||
enqueueAllDeclarations = true,
|
enqueueAllDeclarations = true,
|
||||||
deserializePublicSymbol = ::deserializeOriginalPublicSymbol,
|
deserializePublicSymbol = ::deserializeOriginalPublicSymbol,
|
||||||
)
|
)
|
||||||
@@ -151,7 +149,6 @@ class IcFileDeserializer(
|
|||||||
{ idSig -> idSig.enqueue(this) },
|
{ idSig -> idSig.enqueue(this) },
|
||||||
{ _, s -> s },
|
{ _, s -> s },
|
||||||
enqueueAllDeclarations = true,
|
enqueueAllDeclarations = true,
|
||||||
useGlobalSignatures = true,
|
|
||||||
deserializedSymbols = originalFileDeserializer.symbolDeserializer.deserializedSymbols,
|
deserializedSymbols = originalFileDeserializer.symbolDeserializer.deserializedSymbols,
|
||||||
::deserializePublicSymbol
|
::deserializePublicSymbol
|
||||||
)
|
)
|
||||||
|
|||||||
-2
@@ -33,7 +33,6 @@ class IcModuleDeserializer(
|
|||||||
override val klib: IrLibrary,
|
override val klib: IrLibrary,
|
||||||
override val strategy: DeserializationStrategy,
|
override val strategy: DeserializationStrategy,
|
||||||
private val containsErrorCode: Boolean = false,
|
private val containsErrorCode: Boolean = false,
|
||||||
private val useGlobalSignatures: Boolean = false,
|
|
||||||
) : IrModuleDeserializer(moduleDescriptor, KotlinAbiVersion.CURRENT) {
|
) : IrModuleDeserializer(moduleDescriptor, KotlinAbiVersion.CURRENT) {
|
||||||
|
|
||||||
private val fileToDeserializerMap = mutableMapOf<IrFile, IrFileDeserializer>()
|
private val fileToDeserializerMap = mutableMapOf<IrFile, IrFileDeserializer>()
|
||||||
@@ -145,7 +144,6 @@ class IcModuleDeserializer(
|
|||||||
allowErrorNodes,
|
allowErrorNodes,
|
||||||
strategy.inlineBodies,
|
strategy.inlineBodies,
|
||||||
moduleDeserializer,
|
moduleDeserializer,
|
||||||
useGlobalSignatures,
|
|
||||||
linker::handleNoModuleDeserializerFound,
|
linker::handleNoModuleDeserializerFound,
|
||||||
{ fileDeserializer -> originalEnqueue(fileDeserializer) },
|
{ fileDeserializer -> originalEnqueue(fileDeserializer) },
|
||||||
icFileData,
|
icFileData,
|
||||||
|
|||||||
@@ -290,8 +290,7 @@ fun loadIr(
|
|||||||
symbolTable,
|
symbolTable,
|
||||||
feContext,
|
feContext,
|
||||||
null,
|
null,
|
||||||
depsDescriptors.loweredIcData,
|
depsDescriptors.loweredIcData
|
||||||
loweringsCacheProvider != null
|
|
||||||
)
|
)
|
||||||
val deserializedModuleFragments = sortDependencies(allDependencies, depsDescriptors.descriptors).map { klib ->
|
val deserializedModuleFragments = sortDependencies(allDependencies, depsDescriptors.descriptors).map { klib ->
|
||||||
irLinker.deserializeIrModuleHeader(
|
irLinker.deserializeIrModuleHeader(
|
||||||
@@ -359,8 +358,7 @@ fun loadIr(
|
|||||||
symbolTable,
|
symbolTable,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
loweredIcData,
|
loweredIcData
|
||||||
loweringsCacheProvider != null
|
|
||||||
)
|
)
|
||||||
|
|
||||||
val moduleFragmentToUniqueName = mutableMapOf<IrModuleFragment, String>()
|
val moduleFragmentToUniqueName = mutableMapOf<IrModuleFragment, String>()
|
||||||
|
|||||||
+1
-3
@@ -30,7 +30,6 @@ class JsIrLinker(
|
|||||||
override val translationPluginContext: TranslationPluginContext?,
|
override val translationPluginContext: TranslationPluginContext?,
|
||||||
private val icData: ICData? = null,
|
private val icData: ICData? = null,
|
||||||
private val loweredIcData: Map<ModuleDescriptor, SerializedIcData> = emptyMap(),
|
private val loweredIcData: Map<ModuleDescriptor, SerializedIcData> = emptyMap(),
|
||||||
private val useGlobalSignatures: Boolean = false,
|
|
||||||
) : KotlinIrLinker(currentModule, messageLogger, builtIns, symbolTable, emptyList()) {
|
) : KotlinIrLinker(currentModule, messageLogger, builtIns, symbolTable, emptyList()) {
|
||||||
|
|
||||||
override val fakeOverrideBuilder = FakeOverrideBuilder(this, symbolTable, JsManglerIr, IrTypeSystemContextImpl(builtIns))
|
override val fakeOverrideBuilder = FakeOverrideBuilder(this, symbolTable, JsManglerIr, IrTypeSystemContextImpl(builtIns))
|
||||||
@@ -53,7 +52,6 @@ class JsIrLinker(
|
|||||||
klib,
|
klib,
|
||||||
strategy,
|
strategy,
|
||||||
containsErrorCode = klib.libContainsErrorCode,
|
containsErrorCode = klib.libContainsErrorCode,
|
||||||
useGlobalSignatures = useGlobalSignatures
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return JsModuleDeserializer(moduleDescriptor, klib, strategy, klib.versions.abiVersion ?: KotlinAbiVersion.CURRENT, klib.libContainsErrorCode)
|
return JsModuleDeserializer(moduleDescriptor, klib, strategy, klib.versions.abiVersion ?: KotlinAbiVersion.CURRENT, klib.libContainsErrorCode)
|
||||||
@@ -62,7 +60,7 @@ class JsIrLinker(
|
|||||||
val mapping: JsMapping by lazy { JsMapping(symbolTable.irFactory) }
|
val mapping: JsMapping by lazy { JsMapping(symbolTable.irFactory) }
|
||||||
|
|
||||||
private inner class JsModuleDeserializer(moduleDescriptor: ModuleDescriptor, klib: IrLibrary, strategy: DeserializationStrategy, libraryAbiVersion: KotlinAbiVersion, allowErrorCode: Boolean) :
|
private inner class JsModuleDeserializer(moduleDescriptor: ModuleDescriptor, klib: IrLibrary, strategy: DeserializationStrategy, libraryAbiVersion: KotlinAbiVersion, allowErrorCode: Boolean) :
|
||||||
BasicIrModuleDeserializer(this, moduleDescriptor, klib, strategy, libraryAbiVersion, allowErrorCode, useGlobalSignatures)
|
BasicIrModuleDeserializer(this, moduleDescriptor, klib, strategy, libraryAbiVersion, allowErrorCode)
|
||||||
|
|
||||||
override fun maybeWrapWithBuiltInAndInit(
|
override fun maybeWrapWithBuiltInAndInit(
|
||||||
moduleDescriptor: ModuleDescriptor,
|
moduleDescriptor: ModuleDescriptor,
|
||||||
|
|||||||
Reference in New Issue
Block a user