1.1 --- a/rt/emul/mini/src/main/java/java/lang/Double.java Tue Feb 26 16:54:16 2013 +0100
1.2 +++ b/rt/emul/mini/src/main/java/java/lang/Double.java Wed Feb 27 16:24:42 2013 +0100
1.3 @@ -920,6 +920,26 @@
1.4 * @return the {@code double} floating-point value with the same
1.5 * bit pattern.
1.6 */
1.7 + @JavaScriptBody(args={ "bits" },
1.8 + body=
1.9 + "var hi = bits.high32();\n"
1.10 + + "var s = (hi & 0x80000000) === 0 ? 1 : -1;\n"
1.11 + + "var e = (hi >> 20) & 0x7ff;\n"
1.12 + + "if (e === 0x7ff) {\n"
1.13 + + " if ((bits == 0) && ((hi & 0xfffff) === 0)) {\n"
1.14 + + " return (s > 0) ? Number.POSITIVE_INFINITY"
1.15 + + " : Number.NEGATIVE_INFINITY;\n"
1.16 + + " }\n"
1.17 + + " return Number.NaN;\n"
1.18 + + "}\n"
1.19 + + "var m = (hi & 0xfffff).next32(bits);\n"
1.20 + + "if (e === 0) {\n"
1.21 + + " m = m.shl64(1);\n"
1.22 + + "} else {\n"
1.23 + + " m.hi = m.high32() | 0x100000;\n"
1.24 + + "}\n"
1.25 + + "return s * m.toFP() * Math.pow(2.0, e - 1075);\n"
1.26 + )
1.27 public static native double longBitsToDouble(long bits);
1.28
1.29 /**