IrCall.fromSymbolDescriptor

(cherry picked from commit a1d3e915465ea3c5f35657fe2dcc81f9e7b6a28e)
This commit is contained in:
Georgy Bronnikov
2020-10-14 12:12:17 +03:00
committed by Vasily Levchenko
parent d67067a49e
commit 3087bdea22
8 changed files with 10 additions and 10 deletions
@@ -66,7 +66,6 @@ internal class KonanSharedVariablesManager(val context: KonanBackendContext) : S
IrCallImpl(initializer.startOffset, initializer.endOffset,
context.irBuiltIns.unitType, elementProperty.setter!!.symbol,
elementProperty.setter!!.typeParameters.size, elementProperty.setter!!.valueParameters.size)
sharedVariableInitialization.dispatchReceiver =
IrGetValueImpl(initializer.startOffset, initializer.endOffset,
sharedVariableDeclaration.type, sharedVariableDeclaration.symbol)
@@ -93,7 +93,7 @@ private class AutoboxingTransformer(val context: Context) : AbstractValueUsageTr
override fun IrExpression.useAs(type: IrType): IrExpression {
if (this.isNullConst() && type.isNullablePointer()) {
// TODO: consider using IrConst with proper type.
return IrCallImpl(
return IrCallImpl.fromSymbolDescriptor(
startOffset,
endOffset,
symbols.getNativeNullPtr.owner.returnType,
@@ -234,7 +234,7 @@ private fun Context.buildBridge(startOffset: Int, endOffset: Int,
val typeSafeBarrierDescription = BuiltinMethodsWithSpecialGenericSignature.getDefaultValueForOverriddenBuiltinFunction(overriddenFunction.overriddenFunction.descriptor)
typeSafeBarrierDescription?.let { buildTypeSafeBarrier(bridge, overriddenFunction.function, it) }
val delegatingCall = IrCallImpl(
val delegatingCall = IrCallImpl.fromSymbolDescriptor(
startOffset,
endOffset,
targetSymbol.owner.returnType,
@@ -56,7 +56,8 @@ internal class BuiltinOperatorLowering(val context: Context) : FileLoweringPass,
irBuiltins.checkNotNullSymbol -> lowerCheckNotNull(expression)
irBuiltins.noWhenBranchMatchedExceptionSymbol -> IrCallImpl(expression.startOffset, expression.endOffset,
irBuiltins.noWhenBranchMatchedExceptionSymbol -> IrCallImpl.fromSymbolDescriptor(
expression.startOffset, expression.endOffset,
context.ir.symbols.throwNoWhenBranchMatchedException.owner.returnType,
context.ir.symbols.throwNoWhenBranchMatchedException,
context.ir.symbols.throwNoWhenBranchMatchedException.owner.typeParameters.size,
@@ -110,7 +110,7 @@ internal class EnumUsageLowering(val context: Context)
private fun loadEnumEntry(startOffset: Int, endOffset: Int, enumClass: IrClass, name: Name): IrExpression {
val loweredEnum = context.specialDeclarationsFactory.getLoweredEnum(enumClass)
val ordinal = loweredEnum.entriesMap.getValue(name)
return IrCallImpl(
return IrCallImpl.fromSymbolDescriptor(
startOffset, endOffset, enumClass.defaultType,
loweredEnum.itemGetterSymbol.owner.symbol,
typeArgumentsCount = 0,
@@ -256,4 +256,4 @@ internal class RedundantCoercionsCleaner(val context: Context) : FileLoweringPas
else -> PossiblyFoldedExpression(expression.transformIfAsked(), false)
}
}
}
}
@@ -332,7 +332,7 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
if (expression is IrCall && expression.symbol == executeImplSymbol) {
// Producer and job of executeImpl are called externally, we need to reflect this somehow.
val producerInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
val producerInvocation = IrCallImpl.fromSymbolDescriptor(expression.startOffset, expression.endOffset,
executeImplProducerInvoke.returnType,
executeImplProducerInvoke.symbol,
executeImplProducerInvoke.symbol.owner.typeParameters.size,
@@ -343,7 +343,7 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
val jobFunctionReference = expression.getValueArgument(3) as? IrFunctionReference
?: error("A function reference expected")
val jobInvocation = IrCallImpl(expression.startOffset, expression.endOffset,
val jobInvocation = IrCallImpl.fromSymbolDescriptor(expression.startOffset, expression.endOffset,
jobFunctionReference.symbol.owner.returnType,
jobFunctionReference.symbol as IrSimpleFunctionSymbol,
jobFunctionReference.symbol.owner.typeParameters.size,
@@ -357,7 +357,7 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
// See ObjC instanceOf code generation for details.
if (expression is IrTypeOperatorCall && expression.operator.callsInstanceOf()
&& expression.typeOperand.isObjCObjectType()) {
val objcObjGetter = IrCallImpl(expression.startOffset, expression.endOffset,
val objcObjGetter = IrCallImpl.fromSymbolDescriptor(expression.startOffset, expression.endOffset,
objCObjectRawValueGetter.owner.returnType,
objCObjectRawValueGetter,
objCObjectRawValueGetter.owner.typeParameters.size,
@@ -239,7 +239,7 @@ fun IrBuilderWithScope.irCall(irFunction: IrFunction, typeArguments: List<IrType
irCall(irFunction.symbol, typeArguments)
internal fun irCall(startOffset: Int, endOffset: Int, irFunction: IrSimpleFunction, typeArguments: List<IrType>): IrCall =
IrCallImpl(
IrCallImpl.fromSymbolDescriptor(
startOffset, endOffset, irFunction.substitutedReturnType(typeArguments),
irFunction.symbol, typeArguments.size, irFunction.valueParameters.size
).apply {