1.1 --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Mon Aug 27 14:36:48 2012 +0200
1.2 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Mon Aug 27 15:16:39 2012 +0200
1.3 @@ -187,6 +187,14 @@
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_iand:
1.8 + case bc_land:
1.9 + out.append("stack.push(stack.pop() & stack.pop());");
1.10 + break;
1.11 + case bc_ior:
1.12 + case bc_lor:
1.13 + out.append("stack.push(stack.pop() | stack.pop());");
1.14 + break;
1.15 case bc_ixor:
1.16 case bc_lxor:
1.17 out.append("stack.push(stack.pop() ^ stack.pop());");
1.18 @@ -258,6 +266,13 @@
1.19 i = generateIf(byteCodes, i, "==");
1.20 break;
1.21 }
1.22 + case bc_ifeq: {
1.23 + int indx = i + readIntArg(byteCodes, i);
1.24 + out.append("if (stack.pop() == 0) { gt = " + indx);
1.25 + out.append("; continue; }");
1.26 + i += 2;
1.27 + break;
1.28 + }
1.29 case bc_if_icmpne:
1.30 i = generateIf(byteCodes, i, "!=");
1.31 break;
2.1 --- a/src/test/java/org/apidesign/java4browser/StaticMethod.java Mon Aug 27 14:36:48 2012 +0200
2.2 +++ b/src/test/java/org/apidesign/java4browser/StaticMethod.java Mon Aug 27 15:16:39 2012 +0200
2.3 @@ -40,6 +40,9 @@
2.4 public static long xor(int a, long b) {
2.5 return a ^ b;
2.6 }
2.7 + public static long orOrAnd(boolean doOr, int a, int b) {
2.8 + return doOr ? a | b : 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:36:48 2012 +0200
3.2 +++ b/src/test/java/org/apidesign/java4browser/StaticMethodTest.java Mon Aug 27 15:16:39 2012 +0200
3.3 @@ -101,6 +101,27 @@
3.4 );
3.5 }
3.6
3.7 + @Test public void or() throws Exception {
3.8 + assertExec(
3.9 + "Or will be 7",
3.10 + "org_apidesign_java4browser_StaticMethod_orOrAndJZII",
3.11 + Double.valueOf(7),
3.12 + true,
3.13 + 4,
3.14 + 3
3.15 + );
3.16 + }
3.17 + @Test public void and() throws Exception {
3.18 + assertExec(
3.19 + "And will be 3",
3.20 + "org_apidesign_java4browser_StaticMethod_orOrAndJZII",
3.21 + Double.valueOf(3),
3.22 + false,
3.23 + 7,
3.24 + 3
3.25 + );
3.26 + }
3.27 +
3.28 private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
3.29 StringBuilder sb = new StringBuilder();
3.30 Invocable i = compileClass("StaticMethod.class", sb);