Use special generic signatures from compiler.common.jvm

(cherry picked from commit 1c14b71f707465265326e89d3858c0ab364c950f)
This commit is contained in:
Mikhail Glukhikh
2020-10-15 16:23:09 +03:00
committed by Vasily Levchenko
parent 4aa73c5b35
commit 025c4b3850
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.util.transformFlat
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature
import org.jetbrains.kotlin.load.java.SpecialGenericSignatures
internal class WorkersBridgesBuilding(val context: Context) : DeclarationContainerLoweringPass, IrElementTransformerVoid() {
@@ -200,7 +201,7 @@ private fun IrBuilderWithScope.irConst(value: Any?) = when (value) {
private fun IrBlockBodyBuilder.buildTypeSafeBarrier(function: IrFunction,
originalFunction: IrFunction,
typeSafeBarrierDescription: BuiltinMethodsWithSpecialGenericSignature.TypeSafeBarrierDescription) {
typeSafeBarrierDescription: SpecialGenericSignatures.TypeSafeBarrierDescription) {
val valueParameters = function.valueParameters
val originalValueParameters = originalFunction.valueParameters
for (i in valueParameters.indices) {
@@ -209,7 +210,7 @@ private fun IrBlockBodyBuilder.buildTypeSafeBarrier(function: IrFunction,
val type = originalValueParameters[i].type
if (!type.isNullableAny()) {
+returnIfBadType(irGet(valueParameters[i]), type,
if (typeSafeBarrierDescription == BuiltinMethodsWithSpecialGenericSignature.TypeSafeBarrierDescription.MAP_GET_OR_DEFAULT)
if (typeSafeBarrierDescription == SpecialGenericSignatures.TypeSafeBarrierDescription.MAP_GET_OR_DEFAULT)
irGet(valueParameters[2])
else irConst(typeSafeBarrierDescription.defaultValue)
)