Removes usage of js Infinity values.
Also this change cleans extra code in Math for float parameters.
Change-Id: I0eea8cc548dacae8be6d4d9e4ed66b7e509aef6a
diff --git a/user/super/com/google/gwt/emul/java/lang/Double.java b/user/super/com/google/gwt/emul/java/lang/Double.java
index 5db5b0b..390f694 100644
--- a/user/super/com/google/gwt/emul/java/lang/Double.java
+++ b/user/super/com/google/gwt/emul/java/lang/Double.java
@@ -204,12 +204,12 @@
}
public static boolean isInfinite(double x) {
- return x == JsUtils.getInfinity() || x == -JsUtils.getInfinity();
+ return x == POSITIVE_INFINITY || x == NEGATIVE_INFINITY;
}
- public static native boolean isNaN(double x) /*-{
- return isNaN(x);
- }-*/;
+ public static boolean isNaN(double x) {
+ return JsUtils.isNaN(x);
+ }
public static double longBitsToDouble(long bits) {
long ihi = (long) (bits >> 32);
diff --git a/user/super/com/google/gwt/emul/java/lang/Math.java b/user/super/com/google/gwt/emul/java/lang/Math.java
index f3b4f23..fce3019 100644
--- a/user/super/com/google/gwt/emul/java/lang/Math.java
+++ b/user/super/com/google/gwt/emul/java/lang/Math.java
@@ -15,7 +15,6 @@
*/
package java.lang;
-import javaemul.internal.JsUtils;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;
@@ -223,15 +222,7 @@
}
public static float scalb(float f, int scaleFactor) {
- if (scaleFactor >= 31 || scaleFactor <= -31) {
- return f * (float) Math.pow(2, scaleFactor);
- } else if (scaleFactor > 0) {
- return f * (1 << scaleFactor);
- } else if (scaleFactor == 0) {
- return f;
- } else {
- return f * 1.0f / (1 << -scaleFactor);
- }
+ return (float) scalb((double) f, scaleFactor);
}
public static double signum(double d) {
@@ -245,13 +236,7 @@
}
public static float signum(float f) {
- if (f > 0.0f) {
- return 1.0f;
- } else if (f < 0.0f) {
- return -1.0f;
- } else {
- return 0.0f;
- }
+ return (float) signum((double) f);
}
public static double sin(double x) {
@@ -271,10 +256,8 @@
}
public static double tanh(double x) {
- if (x == JsUtils.getInfinity()) {
- return 1.0d;
- } else if (x == -JsUtils.getInfinity()) {
- return -1.0d;
+ if (Double.isInfinite(x)) {
+ return signum(x);
}
double e2x = Math.exp(2.0 * x);
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
index a1ecbde..4a7b817 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/JsUtils.java
@@ -20,8 +20,8 @@
*/
public class JsUtils {
- public static native double getInfinity() /*-{
- return Infinity;
+ public static native boolean isNaN(double d) /*-{
+ return isNaN(d);
}-*/;
public static native int parseInt(String s, int radix) /*-{