# HG changeset patch # User Jaroslav Tulach # Date 1425061687 -3600 # Node ID 65cab8539582f9e6aa438e34dd5fcc4974e87c14 # Parent 7601b9d64be60c6f0ff4de01bb16e2176638a7a5 Probably faster to use the conditional operator than to call additional compact function diff -r 7601b9d64be6 -r 65cab8539582 rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Fri Feb 27 18:55:06 2015 +0100 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Fri Feb 27 19:28:07 2015 +0100 @@ -224,7 +224,9 @@ return hi.next32(low); } }; - + + // keeping for compatibility with generated bck2brwsr.js library files + // not used since 0.14 numberPrototype.compare = function(x) { if (this == x) { return 0; diff -r 7601b9d64be6 -r 65cab8539582 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Feb 27 18:55:06 2015 +0100 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Feb 27 19:28:07 2015 +0100 @@ -975,11 +975,13 @@ break; case opc_fcmpl: case opc_fcmpg: - smapper.replace(this, VarType.INTEGER, "(@2).compare(@1)", smapper.popF(), smapper.getF(0)); + emit(smapper, this, "var @3 = (@2 == @1) ? 0 : ((@2 < @1) ? -1 : 1);", + smapper.popF(), smapper.popF(), smapper.pushI()); break; case opc_dcmpl: case opc_dcmpg: - smapper.replace(this, VarType.INTEGER, "(@2).compare(@1)", smapper.popD(), smapper.getD(0)); + emit(smapper, this, "var @3 = (@2 == @1) ? 0 : ((@2 < @1) ? -1 : 1);", + smapper.popD(), smapper.popD(), smapper.pushI()); break; case opc_if_acmpeq: i = generateIf(smapper, byteCodes, i, smapper.popA(), smapper.popA(), diff -r 7601b9d64be6 -r 65cab8539582 rt/vm/src/test/java/org/apidesign/vm4brwsr/MathTest.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/MathTest.java Fri Feb 27 18:55:06 2015 +0100 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/MathTest.java Fri Feb 27 19:28:07 2015 +0100 @@ -92,6 +92,26 @@ Math.IEEEremainder(Integer.MAX_VALUE, -4.5), Integer.MAX_VALUE, -4.5 ); } + + @Test public void isNaN() throws Exception { + boolean nan = Double.isNaN(Double.NaN); + assertExec("Same result 1", Double.class, "isNaN__ZD", + 1.0, Double.NaN + ); + } + + @Test public void isInfinite() throws Exception { + assertExec("Same result 1", Double.class, "isInfinite__ZD", + 1.0, Double.POSITIVE_INFINITY + ); + } + + @Test public void isNegInfinite() throws Exception { + assertExec("Same result 1", Double.class, "isInfinite__ZD", + 1.0, Double.NEGATIVE_INFINITY + ); + } + private static TestVM code;