No need to generate primitive final fields as their values get inlined in the classfiles anyway
1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Feb 17 17:33:22 2014 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Feb 17 17:41:00 2014 +0100
1.3 @@ -153,6 +153,11 @@
1.4 }
1.5 for (FieldData v : jc.getFields()) {
1.6 if (v.isStatic()) {
1.7 + if ((v.access & ACC_FINAL) != 0) {
1.8 + if (v.getInternalSig().length() == 1) {
1.9 + continue;
1.10 + }
1.11 + }
1.12 out.append("\n CLS.fld_").append(v.getName()).append(initField(v));
1.13 out.append("\n c._").append(v.getName()).append(" = function (v) {")
1.14 .append(" if (arguments.length == 1) CLS.fld_").append(v.getName())
2.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java Mon Feb 17 17:33:22 2014 +0100
2.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java Mon Feb 17 17:41:00 2014 +0100
2.3 @@ -31,7 +31,7 @@
2.4
2.5 @Override
2.6 public void setByte(byte b) {
2.7 - super.setByte((byte) (b + 1));
2.8 + super.setByte((byte) (b + StaticMethod.MISSING_CONSTANT));
2.9 }
2.10
2.11 public static double recallDbl() {
3.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Mon Feb 17 17:33:22 2014 +0100
3.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Mon Feb 17 17:41:00 2014 +0100
3.3 @@ -67,6 +67,9 @@
3.4 assertEquals(method.indexOf("for"), -1, "There should be no for blocks:\n" + method);
3.5 }
3.6
3.7 + @Test public void dontGeneratePrimitiveFinalConstants() {
3.8 + assertEquals(code.indexOf("MISSING_CONSTANT"), -1, "MISSING_CONSTANT field should not be generated");
3.9 + }
3.10
3.11 @BeforeClass
3.12 public static void compileTheCode() throws Exception {
4.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java Mon Feb 17 17:33:22 2014 +0100
4.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java Mon Feb 17 17:41:00 2014 +0100
4.3 @@ -24,6 +24,7 @@
4.4 * @author Jaroslav Tulach <jtulach@netbeans.org>
4.5 */
4.6 public class StaticMethod {
4.7 + public static final int MISSING_CONSTANT = 1;
4.8 private static int cnt;
4.9 private static Object NULL;
4.10
4.11 @@ -82,7 +83,7 @@
4.12 if (n <= 1) {
4.13 return 1;
4.14 } else {
4.15 - return n * factRec(n - 1);
4.16 + return n * factRec(n - MISSING_CONSTANT);
4.17 }
4.18 }
4.19 public static long factIter(int n) {