1.1 --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Mon Aug 27 14:27:06 2012 +0200
1.2 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Mon Aug 27 14:36:48 2012 +0200
1.3 @@ -187,6 +187,10 @@
1.4 case bc_ddiv:
1.5 out.append("{ var tmp = stack.pop(); stack.push(stack.pop() / tmp); }");
1.6 break;
1.7 + case bc_ixor:
1.8 + case bc_lxor:
1.9 + out.append("stack.push(stack.pop() ^ stack.pop());");
1.10 + break;
1.11 case bc_iinc: {
1.12 final int varIndx = (byteCodes[++i] + 256) % 256;
1.13 final int incrBy = (byteCodes[++i] + 256) % 256;
2.1 --- a/src/test/java/org/apidesign/java4browser/StaticMethod.java Mon Aug 27 14:27:06 2012 +0200
2.2 +++ b/src/test/java/org/apidesign/java4browser/StaticMethod.java Mon Aug 27 14:36:48 2012 +0200
2.3 @@ -37,6 +37,9 @@
2.4 public static int mix(int a, long b, byte c, double d) {
2.5 return (int)((b / a + c) * d);
2.6 }
2.7 + public static long xor(int a, long b) {
2.8 + return a ^ b;
2.9 + }
2.10 public static long factRec(int n) {
2.11 if (n <= 1) {
2.12 return 1;
3.1 --- a/src/test/java/org/apidesign/java4browser/StaticMethodTest.java Mon Aug 27 14:27:06 2012 +0200
3.2 +++ b/src/test/java/org/apidesign/java4browser/StaticMethodTest.java Mon Aug 27 14:36:48 2012 +0200
3.3 @@ -91,6 +91,16 @@
3.4 );
3.5 }
3.6
3.7 + @Test public void xor() throws Exception {
3.8 + assertExec(
3.9 + "Xor is 4",
3.10 + "org_apidesign_java4browser_StaticMethod_xorJIJ",
3.11 + Double.valueOf(4),
3.12 + 7,
3.13 + 3
3.14 + );
3.15 + }
3.16 +
3.17 private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
3.18 StringBuilder sb = new StringBuilder();
3.19 Invocable i = compileClass("StaticMethod.class", sb);