From aa3f64bc93fde3a73b0736c7f6cf1076ff113b57 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Thu, 2 Feb 2017 12:37:59 +0100 Subject: [PATCH] Temporary disable new intrinsics usage in ieee754 arithmetic --- .../org/jetbrains/kotlin/codegen/ExpressionCodegen.java | 6 +++++- .../codegen/bytecodeText/ieee754/nullableDoubleEquals.kt | 9 +++++---- .../bytecodeText/ieee754/nullableDoubleNotEquals.kt | 9 +++++---- .../codegen/bytecodeText/ieee754/nullableFloatEquals.kt | 9 +++++---- .../bytecodeText/ieee754/nullableFloatNotEquals.kt | 9 +++++---- .../codegen/bytecodeText/ieee754/smartCastsForDouble.kt | 9 +++++---- .../codegen/bytecodeText/ieee754/smartCastsForFloat.kt | 9 +++++---- compiler/testData/codegen/bytecodeText/ieee754/when.kt | 5 +++-- .../bytecodeText/ieee754/whenNullableSmartCast.kt | 7 ++++--- 9 files changed, 42 insertions(+), 30 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 770359c596d..970d5139c68 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -3652,7 +3652,11 @@ public class ExpressionCodegen extends KtVisitor impleme if (left754Type != null && right754Type != null && left754Type.type.equals(right754Type.type)) { //check nullability cause there is some optimizations in codegen for non-nullable case if (left754Type.isNullable || right754Type.isNullable) { - if (state.getLanguageVersionSettings().getLanguageVersion() != LanguageVersion.KOTLIN_1_0 && + // Using Intrinsics.areEqual is preferable here, but will result in NoSuchMethodError at runtime if the runtime + // of version 1.0 is used and the user forgot to explicitly specify language version / API version. + // This should be enabled when/if we decide to drop support for "-language-version 1.0" / "-api-version 1.0" + //noinspection ConstantConditions, PointlessBooleanExpression + if (false && state.getLanguageVersionSettings().getLanguageVersion() != LanguageVersion.KOTLIN_1_0 && state.getLanguageVersionSettings().getApiVersion().compareTo(apiVersion1_1) >= 0) { return StackValue.operation(Type.BOOLEAN_TYPE, new Function1() { @Override diff --git a/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleEquals.kt b/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleEquals.kt index 47c2df450e0..8b487c9abc1 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleEquals.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleEquals.kt @@ -24,7 +24,8 @@ fun box(): String { return "OK" } -// 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z -// 1 areEqual \(DLjava/lang/Double;\)Z -// 1 areEqual \(Ljava/lang/Double;D\)Z -// 3 areEqual \ No newline at end of file +/* + 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z + 1 areEqual \(DLjava/lang/Double;\)Z + 1 areEqual \(Ljava/lang/Double;D\)Z + 3 areEqual*/ diff --git a/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleNotEquals.kt b/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleNotEquals.kt index f5738395a6c..1606d206cf0 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleNotEquals.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/nullableDoubleNotEquals.kt @@ -24,7 +24,8 @@ fun box(): String { return "OK" } -// 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z -// 1 areEqual \(DLjava/lang/Double;\)Z -// 1 areEqual \(Ljava/lang/Double;D\)Z -// 3 areEqual \ No newline at end of file +/* + 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z + 1 areEqual \(DLjava/lang/Double;\)Z + 1 areEqual \(Ljava/lang/Double;D\)Z + 3 areEqual*/ diff --git a/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatEquals.kt b/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatEquals.kt index 77a8be7b67e..5670dd98e7d 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatEquals.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatEquals.kt @@ -24,7 +24,8 @@ fun box(): String { return "OK" } -// 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z -// 1 areEqual \(FLjava/lang/Float;\)Z -// 1 areEqual \(Ljava/lang/Float;F\)Z -// 3 areEqual \ No newline at end of file +/* + 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z + 1 areEqual \(FLjava/lang/Float;\)Z + 1 areEqual \(Ljava/lang/Float;F\)Z + 3 areEqual*/ diff --git a/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatNotEquals.kt b/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatNotEquals.kt index ace18422a80..643291dfe4b 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatNotEquals.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/nullableFloatNotEquals.kt @@ -24,7 +24,8 @@ fun box(): String { return "OK" } -// 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z -// 1 areEqual \(FLjava/lang/Float;\)Z -// 1 areEqual \(Ljava/lang/Float;F\)Z -// 3 areEqual \ No newline at end of file +/* + 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z + 1 areEqual \(FLjava/lang/Float;\)Z + 1 areEqual \(Ljava/lang/Float;F\)Z + 3 areEqual*/ diff --git a/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForDouble.kt b/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForDouble.kt index 3493f052af1..5d2b58869aa 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForDouble.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForDouble.kt @@ -17,7 +17,8 @@ fun box(): String { return "OK" } -// 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z -// 1 areEqual \(DLjava/lang/Double;\)Z -// 1 areEqual \(Ljava/lang/Double;D\)Z -// 3 areEqual \ No newline at end of file +/* + 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z + 1 areEqual \(DLjava/lang/Double;\)Z + 1 areEqual \(Ljava/lang/Double;D\)Z + 3 areEqual*/ diff --git a/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForFloat.kt b/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForFloat.kt index dcf8f65c0c9..8163f46af63 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForFloat.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/smartCastsForFloat.kt @@ -17,7 +17,8 @@ fun box(): String { return "OK" } -// 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z -// 1 areEqual \(FLjava/lang/Float;\)Z -// 1 areEqual \(Ljava/lang/Float;F\)Z -// 3 areEqual \ No newline at end of file +/* + 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z + 1 areEqual \(FLjava/lang/Float;\)Z + 1 areEqual \(Ljava/lang/Float;F\)Z + 3 areEqual*/ diff --git a/compiler/testData/codegen/bytecodeText/ieee754/when.kt b/compiler/testData/codegen/bytecodeText/ieee754/when.kt index 44965474b43..a25cd5c1dcc 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/when.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/when.kt @@ -27,5 +27,6 @@ fun box(): String { return "OK" } -// 2 areEqual \(DLjava/lang/Double;\)Z -// 2 areEqual \ No newline at end of file +/* + 2 areEqual \(DLjava/lang/Double;\)Z + 2 areEqual*/ diff --git a/compiler/testData/codegen/bytecodeText/ieee754/whenNullableSmartCast.kt b/compiler/testData/codegen/bytecodeText/ieee754/whenNullableSmartCast.kt index 92573325edf..a458e34d897 100644 --- a/compiler/testData/codegen/bytecodeText/ieee754/whenNullableSmartCast.kt +++ b/compiler/testData/codegen/bytecodeText/ieee754/whenNullableSmartCast.kt @@ -26,6 +26,7 @@ fun box(): String { return "OK" } -// 2 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z -// 2 areEqual \(Ljava/lang/Double;D\)Z -// 4 areEqual \ No newline at end of file +/* + 2 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z + 2 areEqual \(Ljava/lang/Double;D\)Z + 4 areEqual*/