JVM_IR: do not copy bodies when creating static functions
This commit is contained in:
@@ -504,8 +504,7 @@ fun createStaticFunctionWithReceivers(
|
||||
oldFunction: IrFunction,
|
||||
dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type,
|
||||
origin: IrDeclarationOrigin = oldFunction.origin,
|
||||
modality: Modality = Modality.FINAL,
|
||||
copyBody: Boolean = true
|
||||
modality: Modality = Modality.FINAL
|
||||
): IrSimpleFunction {
|
||||
val descriptor = WrappedSimpleFunctionDescriptor(Annotations.EMPTY, oldFunction.descriptor.source)
|
||||
return IrFunctionImpl(
|
||||
@@ -542,10 +541,6 @@ fun createStaticFunctionWithReceivers(
|
||||
oldFunction.valueParameters.map { it.copyTo(this, index = it.index + offset) }
|
||||
)
|
||||
|
||||
if (copyBody) {
|
||||
copyBodyToStatic(oldFunction, this)
|
||||
}
|
||||
|
||||
metadata = oldFunction.metadata
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -237,5 +237,5 @@ class InlineClassLowering(val context: BackendContext) {
|
||||
}
|
||||
|
||||
private fun createStaticBodilessMethod(function: IrFunction): IrSimpleFunction =
|
||||
createStaticFunctionWithReceivers(function.parent, function.name.toInlineClassImplementationName(), function, copyBody = false)
|
||||
createStaticFunctionWithReceivers(function.parent, function.name.toInlineClassImplementationName(), function)
|
||||
}
|
||||
|
||||
+5
-1
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.backend.jvm.lower
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.ir.copyBodyToStatic
|
||||
import org.jetbrains.kotlin.backend.common.ir.passTypeArgumentsFrom
|
||||
import org.jetbrains.kotlin.backend.common.lower.InitializersLowering.Companion.clinitName
|
||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||
@@ -56,7 +57,10 @@ private class InterfaceLowering(val context: JvmBackendContext) : IrElementTrans
|
||||
removedFunctions[function.symbol] = it.symbol
|
||||
}
|
||||
members.add(element)
|
||||
element.body = function.body?.patchDeclarationParents(element)
|
||||
|
||||
copyBodyToStatic(function, element)
|
||||
element.body = element.body?.patchDeclarationParents(element)
|
||||
|
||||
if (function.hasJvmDefault() &&
|
||||
function.origin != JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_ANNOTATIONS
|
||||
) {
|
||||
|
||||
+1
-1
@@ -109,6 +109,6 @@ private class StaticDefaultCallLowering(
|
||||
|
||||
private fun JvmBackendContext.getStaticFunctionWithReceivers(function: IrFunction) =
|
||||
staticDefaultStubs.getOrPut(function.symbol) {
|
||||
createStaticFunctionWithReceivers(function.parent, function.name, function, copyBody = false)
|
||||
createStaticFunctionWithReceivers(function.parent, function.name, function)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user