1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Feb 15 23:16:11 2014 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Feb 16 22:22:22 2014 +0100
1.3 @@ -831,10 +831,16 @@
1.4 final Long lv = new Long(v);
1.5 final int low = (int)(lv.longValue() & 0xFFFFFFFF);
1.6 final int hi = (int)(lv.longValue() >> 32);
1.7 - emit(smapper, out, "var @1 = 0x@3.next32(0x@2);", smapper.pushL(),
1.8 - Integer.toHexString(low), Integer.toHexString(hi));
1.9 + if (hi == 0) {
1.10 + smapper.assign(out, VarType.LONG, "(0x" + Integer.toHexString(low) + ")");
1.11 + } else {
1.12 + smapper.assign(out, VarType.LONG,
1.13 + "0x" + Integer.toHexString(hi) + ".next32(0x" +
1.14 + Integer.toHexString(low) + ")"
1.15 + );
1.16 + }
1.17 } else {
1.18 - emit(smapper, out, "var @1 = @2;", smapper.pushT(type), v);
1.19 + smapper.assign(out, type, v);
1.20 }
1.21 break;
1.22 }
1.23 @@ -1198,13 +1204,13 @@
1.24 break;
1.25 }
1.26 case opc_bipush:
1.27 - emit(smapper, out, "var @1 = @2;",
1.28 - smapper.pushI(), Integer.toString(byteCodes[++i]));
1.29 + smapper.assign(out, VarType.INTEGER,
1.30 + "(" + Integer.toString(byteCodes[++i]) + ")");
1.31 break;
1.32 case opc_sipush:
1.33 - emit(smapper, out, "var @1 = @2;",
1.34 - smapper.pushI(),
1.35 - Integer.toString(readShortArg(byteCodes, i)));
1.36 + smapper.assign(out, VarType.INTEGER,
1.37 + "(" + Integer.toString(readShortArg(byteCodes, i)) + ")"
1.38 + );
1.39 i += 2;
1.40 break;
1.41 case opc_getfield: {