[K/JS] Remove isObject check from runtime ^KT-57926 Fixed

This commit is contained in:
Artem Kobzar
2023-07-03 13:19:43 +00:00
committed by Space Team
parent 23174add97
commit 9ad5910de9
11 changed files with 280 additions and 30 deletions
@@ -117,7 +117,6 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC
val isInterfaceSymbol = getInternalFunction("isInterface")
val isArraySymbol = getInternalFunction("isArray")
// val isCharSymbol = getInternalFunction("isChar")
val isObjectSymbol = getInternalFunction("isObject")
val isSuspendFunctionSymbol = getInternalFunction("isSuspendFunction")
val isNumberSymbol = getInternalFunction("isNumber")
@@ -44,13 +44,13 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : BodyLoweringPass {
private val throwNPE = context.ir.symbols.throwNullPointerException
private val eqeq = context.irBuiltIns.eqeqSymbol
private val booleanNot = context.irBuiltIns.booleanNotSymbol
private val isInterfaceSymbol get() = context.intrinsics.isInterfaceSymbol
private val isArraySymbol get() = context.intrinsics.isArraySymbol
private val isSuspendFunctionSymbol = context.intrinsics.isSuspendFunctionSymbol
// private val isCharSymbol get() = context.intrinsics.isCharSymbol
private val isObjectSymbol get() = context.intrinsics.isObjectSymbol
private val instanceOfIntrinsicSymbol = context.intrinsics.jsInstanceOf
private val isExternalObjectSymbol = context.intrinsics.isExternalObject
@@ -276,8 +276,8 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : BodyLoweringPass {
}
}
private fun generateIsObjectCheck(argument: IrExpression) = JsIrBuilder.buildCall(isObjectSymbol).apply {
putValueArgument(0, argument)
private fun generateIsObjectCheck(argument: IrExpression) = JsIrBuilder.buildCall(booleanNot).apply {
dispatchReceiver = nullCheck(argument)
}
private fun generateTypeCheckWithTypeParameter(argument: IrExpression, toType: IrType): IrExpression {