Do not optimize == for KClasses in redundant boxing elimination
For primitive wrappers such as java.lang.Integer, jlc = java.lang.Integer.class jlt = java.lang.Integer.TYPE !(ljc.equals(ljt)) However, in Kotlin corresponding KClass instances are equal. #KT-17748 Fixed Target versions 1.1.50 #KT-17879 Fixed Target versions 1.1.50
This commit is contained in:
+3
-4
@@ -233,11 +233,10 @@ fun AbstractInsnNode.isAreEqualIntrinsic() =
|
||||
desc == "(Ljava/lang/Object;Ljava/lang/Object;)Z"
|
||||
}
|
||||
|
||||
private val shouldUseEqualsForWrappers = setOf(Type.DOUBLE_TYPE, Type.FLOAT_TYPE, AsmTypes.JAVA_CLASS_TYPE)
|
||||
|
||||
fun canValuesBeUnboxedForAreEqual(values: List<BasicValue>): Boolean =
|
||||
!values.any {
|
||||
val unboxedType = getUnboxedType(it.type)
|
||||
unboxedType == Type.DOUBLE_TYPE || unboxedType == Type.FLOAT_TYPE
|
||||
}
|
||||
values.none { getUnboxedType(it.type) in shouldUseEqualsForWrappers }
|
||||
|
||||
fun AbstractInsnNode.isJavaLangComparableCompareToForSameTypedBoxedValues(values: List<BasicValue>) =
|
||||
isJavaLangComparableCompareTo() && areSameTypedBoxedValues(values)
|
||||
|
||||
Reference in New Issue
Block a user