TotalOrderEquals: Handle nulls
This commit is contained in:
committed by
Dmitry Petrov
parent
b1474b11f2
commit
1bf0354e35
@@ -139,7 +139,12 @@ class TotalOrderEquals(operandType: Type) : IntrinsicMethod() {
|
|||||||
): IrIntrinsicFunction =
|
): IrIntrinsicFunction =
|
||||||
object : IrIntrinsicFunction(expression, signature, context, listOf(boxedType, boxedType)) {
|
object : IrIntrinsicFunction(expression, signature, context, listOf(boxedType, boxedType)) {
|
||||||
override fun genInvokeInstruction(v: InstructionAdapter) {
|
override fun genInvokeInstruction(v: InstructionAdapter) {
|
||||||
v.invokevirtual(boxedType.internalName, "equals", Type.getMethodDescriptor(Type.BOOLEAN_TYPE, AsmTypes.OBJECT_TYPE), false)
|
v.invokestatic(
|
||||||
|
IntrinsicMethods.INTRINSICS_CLASS_NAME,
|
||||||
|
"areEqual",
|
||||||
|
Type.getMethodDescriptor(Type.BOOLEAN_TYPE, AsmTypes.OBJECT_TYPE, AsmTypes.OBJECT_TYPE),
|
||||||
|
false
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: -ThrowNpeOnExplicitEqualsForBoxedNull
|
// !LANGUAGE: -ThrowNpeOnExplicitEqualsForBoxedNull
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FILE: test.kt
|
// FILE: test.kt
|
||||||
|
|||||||
-1
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// KOTLIN_CONFIGURATION_FLAGS: +JVM.NO_EXCEPTION_ON_EXPLICIT_EQUALS_FOR_BOXED_NULL
|
// KOTLIN_CONFIGURATION_FLAGS: +JVM.NO_EXCEPTION_ON_EXPLICIT_EQUALS_FOR_BOXED_NULL
|
||||||
// TARGET_BACKEND: JVM
|
// TARGET_BACKEND: JVM
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: -ThrowNpeOnExplicitEqualsForBoxedNull
|
// !LANGUAGE: -ThrowNpeOnExplicitEqualsForBoxedNull
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// FILE: JavaClass.java
|
// FILE: JavaClass.java
|
||||||
|
|
||||||
public class JavaClass {
|
public class JavaClass {
|
||||||
|
|||||||
Reference in New Issue
Block a user