diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt index 4483f678400..44feeb15bc9 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt @@ -248,7 +248,10 @@ class JvmSymbols( klass.superTypes += suspendFunctionInterface.defaultType klass.addConstructor().apply { addValueParameter("arity", irBuiltIns.intType) - addValueParameter(SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, continuationClass.typeWith(irBuiltIns.anyNType).makeNullable()) + addValueParameter( + SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, + continuationClass.typeWith(irBuiltIns.anyNType).makeNullable() + ) } klass.addFunction(INVOKE_SUSPEND_METHOD_NAME, irBuiltIns.anyNType, Modality.ABSTRACT, Visibilities.PROTECTED).apply { addValueParameter(SUSPEND_CALL_RESULT_NAME, resultClassStub.typeWith(irBuiltIns.anyNType)) @@ -607,15 +610,20 @@ class JvmSymbols( val enumValueOfFunction: IrSimpleFunctionSymbol = javaLangEnum.functionByName("valueOf") + private val kotlinCoroutinesJvmInternalRunSuspendKt = + createClass(FqName("kotlin.coroutines.jvm.internal.RunSuspendKt")) { klass -> + klass.addFunction("runSuspend", irBuiltIns.unitType, isStatic = true).apply { + addValueParameter( + "block", + getJvmSuspendFunctionClass(0).typeWith( + irBuiltIns.unitType + ) + ) + } + } + val runSuspendFunction: IrSimpleFunctionSymbol = - buildFun { - name = Name.identifier("runSuspend") - origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB - }.apply { - parent = kotlinCoroutinesJvmInternalPackage - returnType = irBuiltIns.unitType - addValueParameter("block", getJvmSuspendFunctionClass(0).typeWith(continuationClass.typeWith(irBuiltIns.unitType), irBuiltIns.anyNType)) - }.symbol + kotlinCoroutinesJvmInternalRunSuspendKt.functionByName("runSuspend") } private fun IrClassSymbol.functionByName(name: String): IrSimpleFunctionSymbol = diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt index 425273df1db..a81dd7e9d5c 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/IrIntrinsicMethods.kt @@ -104,8 +104,7 @@ class IrIntrinsicMethods(val irBuiltIns: IrBuiltIns, val symbols: JvmSymbols) { irBuiltIns.dataClassArrayMemberToStringSymbol.toKey()!! to IrDataClassArrayMemberToString, symbols.unsafeCoerceIntrinsic.toKey()!! to UnsafeCoerce, symbols.signatureStringIntrinsic.toKey()!! to SignatureString, - symbols.reassignParameterIntrinsic.toKey()!! to ReassignParameter, - symbols.runSuspendFunction.toKey()!! to RunSuspend + symbols.reassignParameterIntrinsic.toKey()!! to ReassignParameter ) + numberConversionMethods() + unaryFunForPrimitives("plus", UnaryPlus) + diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/RunSuspend.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/RunSuspend.kt deleted file mode 100644 index c1374e4cb2f..00000000000 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/RunSuspend.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.backend.jvm.intrinsics - -import org.jetbrains.kotlin.backend.jvm.JvmBackendContext -import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression -import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature - -object RunSuspend : IntrinsicMethod() { - override fun toCallable( - expression: IrFunctionAccessExpression, - signature: JvmMethodSignature, - context: JvmBackendContext - ): IrIntrinsicFunction { - return IrIntrinsicFunction.create(expression, signature, context) { - it.invokestatic("kotlin/coroutines/jvm/internal/RunSuspendKt", "runSuspend", "(Lkotlin/jvm/functions/Function1;)V", false) - } - } -} \ No newline at end of file