# HG changeset patch # User Jaroslav Tulach # Date 1346071008 -7200 # Node ID 6e4682985907c72437bd479582abb42299b5a0e1 # Parent d3193a7086e7915c6b10926e6e0abd4454aae8a4 Support for xor diff -r d3193a7086e7 -r 6e4682985907 src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Mon Aug 27 14:27:06 2012 +0200 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java Mon Aug 27 14:36:48 2012 +0200 @@ -187,6 +187,10 @@ case bc_ddiv: out.append("{ var tmp = stack.pop(); stack.push(stack.pop() / tmp); }"); break; + case bc_ixor: + case bc_lxor: + out.append("stack.push(stack.pop() ^ stack.pop());"); + break; case bc_iinc: { final int varIndx = (byteCodes[++i] + 256) % 256; final int incrBy = (byteCodes[++i] + 256) % 256; diff -r d3193a7086e7 -r 6e4682985907 src/test/java/org/apidesign/java4browser/StaticMethod.java --- a/src/test/java/org/apidesign/java4browser/StaticMethod.java Mon Aug 27 14:27:06 2012 +0200 +++ b/src/test/java/org/apidesign/java4browser/StaticMethod.java Mon Aug 27 14:36:48 2012 +0200 @@ -37,6 +37,9 @@ public static int mix(int a, long b, byte c, double d) { return (int)((b / a + c) * d); } + public static long xor(int a, long b) { + return a ^ b; + } public static long factRec(int n) { if (n <= 1) { return 1; diff -r d3193a7086e7 -r 6e4682985907 src/test/java/org/apidesign/java4browser/StaticMethodTest.java --- a/src/test/java/org/apidesign/java4browser/StaticMethodTest.java Mon Aug 27 14:27:06 2012 +0200 +++ b/src/test/java/org/apidesign/java4browser/StaticMethodTest.java Mon Aug 27 14:36:48 2012 +0200 @@ -91,6 +91,16 @@ ); } + @Test public void xor() throws Exception { + assertExec( + "Xor is 4", + "org_apidesign_java4browser_StaticMethod_xorJIJ", + Double.valueOf(4), + 7, + 3 + ); + } + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { StringBuilder sb = new StringBuilder(); Invocable i = compileClass("StaticMethod.class", sb);