Adapt to IrSimpleFunctionSymbol in IrCall
(cherry picked from commit d5a048dc3a905898fc4db71a6c518c39b5b58efe)
This commit is contained in:
committed by
Vasily Levchenko
parent
5bdcf23f24
commit
de33e1c81a
+1
-1
@@ -114,7 +114,7 @@ internal fun KotlinStubs.generateCCall(expression: IrCall, builder: IrBuilderWit
|
|||||||
|
|
||||||
val callBuilder = KotlinToCCallBuilder(builder, this, isObjCMethod = false)
|
val callBuilder = KotlinToCCallBuilder(builder, this, isObjCMethod = false)
|
||||||
|
|
||||||
val callee = expression.symbol.owner as IrSimpleFunction
|
val callee = expression.symbol.owner
|
||||||
|
|
||||||
// TODO: consider computing all arguments before converting.
|
// TODO: consider computing all arguments before converting.
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -110,7 +110,7 @@ internal class WorkersBridgesBuilding(val context: Context) : DeclarationContain
|
|||||||
startOffset = job.startOffset,
|
startOffset = job.startOffset,
|
||||||
endOffset = job.endOffset,
|
endOffset = job.endOffset,
|
||||||
overriddenFunction = overriddenJobDescriptor,
|
overriddenFunction = overriddenJobDescriptor,
|
||||||
targetSymbol = job.symbol)
|
targetSymbol = jobFunction.symbol)
|
||||||
bridges += bridge
|
bridges += bridge
|
||||||
expression.putValueArgument(3, IrFunctionReferenceImpl(
|
expression.putValueArgument(3, IrFunctionReferenceImpl(
|
||||||
startOffset = job.startOffset,
|
startOffset = job.startOffset,
|
||||||
@@ -218,7 +218,7 @@ private fun IrBlockBodyBuilder.buildTypeSafeBarrier(function: IrFunction,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun Context.buildBridge(startOffset: Int, endOffset: Int,
|
private fun Context.buildBridge(startOffset: Int, endOffset: Int,
|
||||||
overriddenFunction: OverriddenFunctionInfo, targetSymbol: IrFunctionSymbol,
|
overriddenFunction: OverriddenFunctionInfo, targetSymbol: IrSimpleFunctionSymbol,
|
||||||
superQualifierSymbol: IrClassSymbol? = null): IrFunction {
|
superQualifierSymbol: IrClassSymbol? = null): IrFunction {
|
||||||
|
|
||||||
val bridge = specialDeclarationsFactory.getBridge(overriddenFunction)
|
val bridge = specialDeclarationsFactory.getBridge(overriddenFunction)
|
||||||
|
|||||||
+2
-2
@@ -715,7 +715,7 @@ private class InteropLoweringPart1(val context: Context) : BaseInteropIrTransfor
|
|||||||
|
|
||||||
return builder.at(expression).run {
|
return builder.at(expression).run {
|
||||||
val classPtr = getRawPtr(expression.extensionReceiver!!)
|
val classPtr = getRawPtr(expression.extensionReceiver!!)
|
||||||
callAllocAndInit(classPtr, initMethodInfo, arguments, expression, callee as IrSimpleFunction)
|
callAllocAndInit(classPtr, initMethodInfo, arguments, expression, callee)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -753,7 +753,7 @@ private class InteropLoweringPart1(val context: Context) : BaseInteropIrTransfor
|
|||||||
receiver = expression.dispatchReceiver ?: expression.extensionReceiver!!,
|
receiver = expression.dispatchReceiver ?: expression.extensionReceiver!!,
|
||||||
arguments = arguments,
|
arguments = arguments,
|
||||||
call = expression,
|
call = expression,
|
||||||
method = callee as IrSimpleFunction
|
method = callee
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass
|
|||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.*
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
@@ -338,7 +339,7 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
|
|||||||
?: error("A function reference expected")
|
?: error("A function reference expected")
|
||||||
val jobInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
|
val jobInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
|
||||||
jobFunctionReference.symbol.owner.returnType,
|
jobFunctionReference.symbol.owner.returnType,
|
||||||
jobFunctionReference.symbol)
|
jobFunctionReference.symbol as IrSimpleFunctionSymbol)
|
||||||
jobInvocation.putValueArgument(0, producerInvocation)
|
jobInvocation.putValueArgument(0, producerInvocation)
|
||||||
|
|
||||||
expressions += jobInvocation
|
expressions += jobInvocation
|
||||||
@@ -665,7 +666,6 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
|
|||||||
if (callee is IrConstructor) {
|
if (callee is IrConstructor) {
|
||||||
error("Constructor call should be done with IrConstructorCall")
|
error("Constructor call should be done with IrConstructorCall")
|
||||||
} else {
|
} else {
|
||||||
callee as IrSimpleFunction
|
|
||||||
if (callee.isOverridable && value.superQualifierSymbol == null) {
|
if (callee.isOverridable && value.superQualifierSymbol == null) {
|
||||||
val owner = callee.parentAsClass
|
val owner = callee.parentAsClass
|
||||||
val actualReceiverType = value.dispatchReceiver!!.type
|
val actualReceiverType = value.dispatchReceiver!!.type
|
||||||
|
|||||||
+1
-1
@@ -1402,7 +1402,7 @@ internal object Devirtualization {
|
|||||||
actualType: IrType,
|
actualType: IrType,
|
||||||
devirtualizedCallee: DevirtualizedCallee,
|
devirtualizedCallee: DevirtualizedCallee,
|
||||||
arguments: List<IrExpression>): IrCall {
|
arguments: List<IrExpression>): IrCall {
|
||||||
val actualCallee = devirtualizedCallee.callee.irFunction!!
|
val actualCallee = devirtualizedCallee.callee.irFunction as IrSimpleFunction
|
||||||
val call = IrCallImpl(
|
val call = IrCallImpl(
|
||||||
callSite.startOffset, callSite.endOffset,
|
callSite.startOffset, callSite.endOffset,
|
||||||
actualType,
|
actualType,
|
||||||
|
|||||||
+1
-1
@@ -238,7 +238,7 @@ fun IrBuilderWithScope.irCall(symbol: IrFunctionSymbol, typeArguments: List<IrTy
|
|||||||
fun IrBuilderWithScope.irCall(irFunction: IrFunction, typeArguments: List<IrType> = emptyList()) =
|
fun IrBuilderWithScope.irCall(irFunction: IrFunction, typeArguments: List<IrType> = emptyList()) =
|
||||||
irCall(irFunction.symbol, typeArguments)
|
irCall(irFunction.symbol, typeArguments)
|
||||||
|
|
||||||
internal fun irCall(startOffset: Int, endOffset: Int, irFunction: IrFunction, typeArguments: List<IrType>): IrCall =
|
internal fun irCall(startOffset: Int, endOffset: Int, irFunction: IrSimpleFunction, typeArguments: List<IrType>): IrCall =
|
||||||
IrCallImpl(
|
IrCallImpl(
|
||||||
startOffset, endOffset, irFunction.substitutedReturnType(typeArguments),
|
startOffset, endOffset, irFunction.substitutedReturnType(typeArguments),
|
||||||
irFunction.symbol, typeArguments.size
|
irFunction.symbol, typeArguments.size
|
||||||
|
|||||||
Reference in New Issue
Block a user