Long - conversion to exact string representation works.
1.1 --- a/emul/mini/src/main/java/java/lang/Long.java Tue Feb 05 15:03:22 2013 +0100
1.2 +++ b/emul/mini/src/main/java/java/lang/Long.java Tue Feb 05 16:32:14 2013 +0100
1.3 @@ -262,7 +262,7 @@
1.4 * @param i a {@code long} to be converted.
1.5 * @return a string representation of the argument in base 10.
1.6 */
1.7 - @JavaScriptBody(args = "i", body = "return i.toString();")
1.8 + @JavaScriptBody(args = "i", body = "return i.toExactString();")
1.9 public static String toString(long i) {
1.10 if (i == Long.MIN_VALUE)
1.11 return "-9223372036854775808";
2.1 --- a/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Tue Feb 05 15:03:22 2013 +0100
2.2 +++ b/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Tue Feb 05 16:32:14 2013 +0100
2.3 @@ -37,8 +37,15 @@
2.4 var a = [ 6,9,2,7,6,9,4,9,2,4 ];
2.5 var s = '';
2.6 var digit;
2.7 - var hi = this.hi;
2.8 - var low = this;
2.9 + var neg = this.hi < 0;
2.10 + if (neg) {
2.11 + var x = this.neg64();
2.12 + var hi = x.hi;
2.13 + var low = x;
2.14 + } else {
2.15 + var hi = this.hi;
2.16 + var low = this;
2.17 + }
2.18 for (var i = 0; i < a.length; i++) {
2.19 res += hi * a[i];
2.20 var low_digit = low % 10;
2.21 @@ -53,7 +60,7 @@
2.22 }
2.23 s = String(digit).concat(s);
2.24 }
2.25 - return String(res).concat(s);
2.26 + return (neg ? '-' : '').concat(res).concat(s);
2.27 }
2.28 return String(this);
2.29 };