src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java
changeset 1 48b1dce93691
parent 0 71aab30ab2b7
child 2 4679bf342a1f
     1.1 --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java	Mon Aug 27 05:08:30 2012 +0200
     1.2 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java	Mon Aug 27 05:17:08 2012 +0200
     1.3 @@ -55,7 +55,7 @@
     1.4          }
     1.5      }
     1.6      private void generateStaticMethod(Method m) throws IOException {
     1.7 -        out.append("function ").append(
     1.8 +        out.append("\nfunction ").append(
     1.9              jc.getName().getExternalName().replace('.', '_')
    1.10          ).append('_').append(
    1.11              m.getName()
    1.12 @@ -85,7 +85,6 @@
    1.13          out.append(Integer.toString(code.getMaxStack()));
    1.14          out.append(");\n");
    1.15          produceCode(code.getByteCodes());
    1.16 -        out.append(";\nreturn 1;");
    1.17          out.append("}");
    1.18      }
    1.19  
    1.20 @@ -97,17 +96,36 @@
    1.21              switch (c) {
    1.22                  case ByteCodes.bc_aload_0:
    1.23                  case ByteCodes.bc_iload_0:
    1.24 +                case ByteCodes.bc_lload_0:
    1.25 +                case ByteCodes.bc_fload_0:
    1.26 +                case ByteCodes.bc_dload_0:
    1.27                      out.append("stack.push(arg0);");
    1.28                      break;
    1.29                  case ByteCodes.bc_aload_1:
    1.30                  case ByteCodes.bc_iload_1:
    1.31 +                case ByteCodes.bc_lload_1:
    1.32 +                case ByteCodes.bc_fload_1:
    1.33 +                case ByteCodes.bc_dload_1:
    1.34                      out.append("stack.push(arg1);");
    1.35                      break;
    1.36                  case ByteCodes.bc_iadd:
    1.37 +                case ByteCodes.bc_ladd:
    1.38 +                case ByteCodes.bc_fadd:
    1.39 +                case ByteCodes.bc_dadd:
    1.40                      out.append("stack.push(stack.pop() + stack.pop());");
    1.41                      break;
    1.42 +                case ByteCodes.bc_imul:
    1.43 +                case ByteCodes.bc_lmul:
    1.44 +                case ByteCodes.bc_fmul:
    1.45 +                case ByteCodes.bc_dmul:
    1.46 +                    out.append("stack.push(stack.pop() * stack.pop());");
    1.47 +                    break;
    1.48                  case ByteCodes.bc_ireturn:
    1.49 +                case ByteCodes.bc_lreturn:
    1.50 +                case ByteCodes.bc_freturn:
    1.51 +                case ByteCodes.bc_dreturn:
    1.52                      out.append("return stack.pop();");
    1.53 +                    break;
    1.54              }
    1.55              out.append("/*");
    1.56              for (int j = prev; j <= i; j++) {