JVM_IR: fix parallel compilation
Non-static inline functions that return inline classes need to be tracked when copying files for by-file lowering. FIXED: KT-45680
This commit is contained in:
committed by
teamcityserver
parent
594cc29dd2
commit
40872dd4ca
@@ -185,6 +185,13 @@ class JvmBackendContext(
|
||||
functionSymbolMap[staticReplacement.symbol] = newStaticReplacement.symbol
|
||||
}
|
||||
|
||||
for ((methodReplacement, original) in inlineClassReplacements.originalFunctionForMethodReplacement) {
|
||||
if (methodReplacement !is IrSimpleFunction) continue
|
||||
val newOriginal = functionSymbolMap[original.symbol]?.owner ?: continue
|
||||
val newMethodReplacement = inlineClassReplacements.getReplacementFunction(newOriginal) ?: continue
|
||||
functionSymbolMap[methodReplacement.symbol] = newMethodReplacement.symbol
|
||||
}
|
||||
|
||||
for ((original, suspendView) in suspendFunctionOriginalToView) {
|
||||
val newOriginal = functionSymbolMap[original.symbol]?.owner ?: continue
|
||||
val newSuspendView = suspendFunctionOriginalToView[newOriginal] ?: continue
|
||||
|
||||
+2
@@ -45,6 +45,7 @@ class MemoizedInlineClassReplacements(
|
||||
private val propertyMap = ConcurrentHashMap<IrPropertySymbol, IrProperty>()
|
||||
|
||||
internal val originalFunctionForStaticReplacement: MutableMap<IrFunction, IrFunction> = ConcurrentHashMap()
|
||||
internal val originalFunctionForMethodReplacement: MutableMap<IrFunction, IrFunction> = ConcurrentHashMap()
|
||||
|
||||
/**
|
||||
* Get a replacement for a function or a constructor.
|
||||
@@ -181,6 +182,7 @@ class MemoizedInlineClassReplacements(
|
||||
|
||||
private fun createMethodReplacement(function: IrFunction): IrSimpleFunction =
|
||||
buildReplacement(function, function.origin) {
|
||||
originalFunctionForMethodReplacement[this] = function
|
||||
require(function.dispatchReceiverParameter != null && function is IrSimpleFunction)
|
||||
dispatchReceiverParameter = function.dispatchReceiverParameter?.copyTo(this, index = -1)
|
||||
extensionReceiverParameter = function.extensionReceiverParameter?.copyTo(this, index = -1, name = Name.identifier("\$receiver"))
|
||||
|
||||
Reference in New Issue
Block a user