diff -r 035fcbd7a33c -r e3f671b50e93 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Jan 28 00:15:38 2013 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Jan 30 22:23:21 2013 +0100 @@ -582,7 +582,7 @@ emit(out, "@1 &= @2;", smapper.getI(1), smapper.popI()); break; case opc_land: - emit(out, "@1 &= @2;", smapper.getL(1), smapper.popL()); + emit(out, "@1 = @1.and64(@2);", smapper.getL(1), smapper.popL()); break; case opc_ior: emit(out, "@1 |= @2;", smapper.getI(1), smapper.popI()); @@ -618,7 +618,7 @@ emit(out, "@1 >>= @2;", smapper.getI(1), smapper.popI()); break; case opc_lshr: - emit(out, "@1 >>= @2;", smapper.getL(1), smapper.popI()); + emit(out, "@1 = @1.shr64(@2);", smapper.getL(1), smapper.popI()); break; case opc_iushr: emit(out, "@1 >>>= @2;", smapper.getI(1), smapper.popI());