JVM IR: remove unneeded usages of MethodSignatureMapper.mapToCallableMethod
This commit is contained in:
-3
@@ -957,9 +957,6 @@ class ExpressionCodegen(
|
|||||||
return classReference.onStack
|
return classReference.onStack
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun resolveToCallable(irCall: IrFunctionAccessExpression, isSuper: Boolean): IrCallableMethod =
|
|
||||||
methodSignatureMapper.mapToCallableMethod(irCall, isSuper)
|
|
||||||
|
|
||||||
private fun getOrCreateCallGenerator(element: IrFunctionAccessExpression, data: BlockInfo): IrCallGenerator {
|
private fun getOrCreateCallGenerator(element: IrFunctionAccessExpression, data: BlockInfo): IrCallGenerator {
|
||||||
if (!element.symbol.owner.isInlineFunctionCall(context) ||
|
if (!element.symbol.owner.isInlineFunctionCall(context) ||
|
||||||
classCodegen.irClass.fileParent.fileEntry is MultifileFacadeFileEntry
|
classCodegen.irClass.fileParent.fileEntry is MultifileFacadeFileEntry
|
||||||
|
|||||||
+6
-4
@@ -17,8 +17,10 @@
|
|||||||
package org.jetbrains.kotlin.backend.jvm.intrinsics
|
package org.jetbrains.kotlin.backend.jvm.intrinsics
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.codegen.mapClass
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
|
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
|
||||||
|
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||||
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
||||||
|
|
||||||
object ArrayIterator : IntrinsicMethod() {
|
object ArrayIterator : IntrinsicMethod() {
|
||||||
@@ -27,11 +29,11 @@ object ArrayIterator : IntrinsicMethod() {
|
|||||||
signature: JvmMethodSignature,
|
signature: JvmMethodSignature,
|
||||||
context: JvmBackendContext
|
context: JvmBackendContext
|
||||||
): IrIntrinsicFunction {
|
): IrIntrinsicFunction {
|
||||||
val method = context.methodSignatureMapper.mapToCallableMethod(expression, false)
|
val owner = context.typeMapper.mapClass(expression.symbol.owner.parentAsClass)
|
||||||
return IrIntrinsicFunction.create(expression, signature, context, method.owner) {
|
return IrIntrinsicFunction.create(expression, signature, context, owner) {
|
||||||
val methodSignature = "(${method.owner.descriptor})${method.asmMethod.returnType.descriptor}"
|
val methodSignature = "(${owner.descriptor})${signature.returnType.descriptor}"
|
||||||
val intrinsicOwner =
|
val intrinsicOwner =
|
||||||
if (AsmUtil.isPrimitive(method.owner.elementType))
|
if (AsmUtil.isPrimitive(owner.elementType))
|
||||||
"kotlin/jvm/internal/ArrayIteratorsKt"
|
"kotlin/jvm/internal/ArrayIteratorsKt"
|
||||||
else
|
else
|
||||||
"kotlin/jvm/internal/ArrayIteratorKt"
|
"kotlin/jvm/internal/ArrayIteratorKt"
|
||||||
|
|||||||
+8
-3
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.jvm.intrinsics
|
|||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
import org.jetbrains.kotlin.backend.jvm.codegen.BlockInfo
|
import org.jetbrains.kotlin.backend.jvm.codegen.BlockInfo
|
||||||
import org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen
|
import org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.codegen.mapClass
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||||
import org.jetbrains.kotlin.codegen.Callable
|
import org.jetbrains.kotlin.codegen.Callable
|
||||||
import org.jetbrains.kotlin.codegen.StackValue
|
import org.jetbrains.kotlin.codegen.StackValue
|
||||||
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
|
|||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.util.dump
|
import org.jetbrains.kotlin.ir.util.dump
|
||||||
import org.jetbrains.kotlin.ir.util.isVararg
|
import org.jetbrains.kotlin.ir.util.isVararg
|
||||||
|
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||||
import org.jetbrains.kotlin.ir.util.substitute
|
import org.jetbrains.kotlin.ir.util.substitute
|
||||||
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
@@ -138,10 +140,13 @@ open class IrIntrinsicFunction(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun IrFunctionAccessExpression.argTypes(context: JvmBackendContext): ArrayList<Type> {
|
fun IrFunctionAccessExpression.argTypes(context: JvmBackendContext): ArrayList<Type> {
|
||||||
val callableMethod = context.methodSignatureMapper.mapToCallableMethod(this, false)
|
val callee = symbol.owner
|
||||||
|
val signature = context.methodSignatureMapper.mapSignatureSkipGeneric(callee)
|
||||||
return arrayListOf<Type>().apply {
|
return arrayListOf<Type>().apply {
|
||||||
callableMethod.dispatchReceiverType?.let { add(it) }
|
if (dispatchReceiver != null) {
|
||||||
addAll(callableMethod.asmMethod.argumentTypes)
|
add(context.typeMapper.mapClass(callee.parentAsClass))
|
||||||
|
}
|
||||||
|
addAll(signature.asmMethod.argumentTypes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user