rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchReducedStack
changeset 1462 1e7ff3ba3666
parent 1459 6575d1848af3
child 1463 15c1110da559
     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: {