1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Mon Feb 17 14:26:55 2014 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Mon Feb 17 15:39:34 2014 +0100
1.3 @@ -2806,6 +2806,10 @@
1.4 lastFrameByteCodeOffset = -1;
1.5 advanceBy(0);
1.6 }
1.7 +
1.8 + public boolean isEmpty() {
1.9 + return stackMapTable.length == 0;
1.10 + }
1.11
1.12 public String getFrameAsString() {
1.13 return (nextFrameIndex == 0)
2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Feb 17 14:26:55 2014 +0100
2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Feb 17 15:39:34 2014 +0100
2.3 @@ -322,11 +322,19 @@
2.4 out.append(" var ").append(" lcA0 = this;\n");
2.5 }
2.6
2.7 - int lastStackFrame = -1;
2.8 + int lastStackFrame;
2.9 TrapData[] previousTrap = null;
2.10 boolean wide = false;
2.11 + boolean didBranches;
2.12 + if (stackMapIterator.isEmpty()) {
2.13 + didBranches = false;
2.14 + lastStackFrame = 0;
2.15 + } else {
2.16 + didBranches = true;
2.17 + lastStackFrame = -1;
2.18 + out.append("\n var gt = 0;\n");
2.19 + }
2.20
2.21 - out.append("\n var gt = 0;\n");
2.22 int openBraces = 0;
2.23 int topMostLabel = 0;
2.24 for (int i = 0; i < byteCodes.length; i++) {
2.25 @@ -1313,7 +1321,9 @@
2.26 if (previousTrap != null) {
2.27 generateCatch(previousTrap, byteCodes.length, topMostLabel);
2.28 }
2.29 - out.append("\n }\n");
2.30 + if (didBranches) {
2.31 + out.append("\n }\n");
2.32 + }
2.33 while (openBraces-- > 0) {
2.34 out.append('}');
2.35 }
3.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Mon Feb 17 14:26:55 2014 +0100
3.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Mon Feb 17 15:39:34 2014 +0100
3.3 @@ -64,6 +64,7 @@
3.4 method = method.replace("constructor", "CNSTR");
3.5
3.6 assertEquals(method.indexOf("st"), -1, "There should be no stack operations:\n" + method);
3.7 + assertEquals(method.indexOf("for"), -1, "There should be no for blocks:\n" + method);
3.8 }
3.9
3.10