Support for xor
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 27 Aug 2012 14:36:48 +0200
changeset 66e4682985907
parent 5 d3193a7086e7
child 7 5b135a2f2de3
Support for xor
src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java
src/test/java/org/apidesign/java4browser/StaticMethod.java
src/test/java/org/apidesign/java4browser/StaticMethodTest.java
     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);