rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchReducedStack
changeset 1469 f57fa856ffc4
parent 1468 5d6b648a39db
child 1472 0a1b4f1bf4d0
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Mon Feb 17 14:26:55 2014 +0100
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Mon Feb 17 15:39:34 2014 +0100
     1.3 @@ -322,11 +322,19 @@
     1.4              out.append("  var ").append(" lcA0 = this;\n");
     1.5          }
     1.6  
     1.7 -        int lastStackFrame = -1;
     1.8 +        int lastStackFrame;
     1.9          TrapData[] previousTrap = null;
    1.10          boolean wide = false;
    1.11 +        boolean didBranches;
    1.12 +        if (stackMapIterator.isEmpty()) {
    1.13 +            didBranches = false;
    1.14 +            lastStackFrame = 0;
    1.15 +        } else {
    1.16 +            didBranches = true;
    1.17 +            lastStackFrame = -1;
    1.18 +            out.append("\n  var gt = 0;\n");
    1.19 +        }
    1.20          
    1.21 -        out.append("\n  var gt = 0;\n");
    1.22          int openBraces = 0;
    1.23          int topMostLabel = 0;
    1.24          for (int i = 0; i < byteCodes.length; i++) {
    1.25 @@ -1313,7 +1321,9 @@
    1.26          if (previousTrap != null) {
    1.27              generateCatch(previousTrap, byteCodes.length, topMostLabel);
    1.28          }
    1.29 -        out.append("\n    }\n");
    1.30 +        if (didBranches) {
    1.31 +            out.append("\n    }\n");
    1.32 +        }
    1.33          while (openBraces-- > 0) {
    1.34              out.append('}');
    1.35          }