# HG changeset patch # User Jaroslav Tulach # Date 1392655260 -3600 # Node ID 0a1b4f1bf4d06138037158271f42b3ae094fb773 # Parent 6655ae68ef9b2bc3287599ae39567e71b63afe2b No need to generate primitive final fields as their values get inlined in the classfiles anyway diff -r 6655ae68ef9b -r 0a1b4f1bf4d0 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Feb 17 17:33:22 2014 +0100 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Feb 17 17:41:00 2014 +0100 @@ -153,6 +153,11 @@ } for (FieldData v : jc.getFields()) { if (v.isStatic()) { + if ((v.access & ACC_FINAL) != 0) { + if (v.getInternalSig().length() == 1) { + continue; + } + } out.append("\n CLS.fld_").append(v.getName()).append(initField(v)); out.append("\n c._").append(v.getName()).append(" = function (v) {") .append(" if (arguments.length == 1) CLS.fld_").append(v.getName()) diff -r 6655ae68ef9b -r 0a1b4f1bf4d0 rt/vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java Mon Feb 17 17:33:22 2014 +0100 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/InstanceSub.java Mon Feb 17 17:41:00 2014 +0100 @@ -31,7 +31,7 @@ @Override public void setByte(byte b) { - super.setByte((byte) (b + 1)); + super.setByte((byte) (b + StaticMethod.MISSING_CONSTANT)); } public static double recallDbl() { diff -r 6655ae68ef9b -r 0a1b4f1bf4d0 rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Mon Feb 17 17:33:22 2014 +0100 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/SizeOfAMethodTest.java Mon Feb 17 17:41:00 2014 +0100 @@ -67,6 +67,9 @@ assertEquals(method.indexOf("for"), -1, "There should be no for blocks:\n" + method); } + @Test public void dontGeneratePrimitiveFinalConstants() { + assertEquals(code.indexOf("MISSING_CONSTANT"), -1, "MISSING_CONSTANT field should not be generated"); + } @BeforeClass public static void compileTheCode() throws Exception { diff -r 6655ae68ef9b -r 0a1b4f1bf4d0 rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java Mon Feb 17 17:33:22 2014 +0100 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethod.java Mon Feb 17 17:41:00 2014 +0100 @@ -24,6 +24,7 @@ * @author Jaroslav Tulach */ public class StaticMethod { + public static final int MISSING_CONSTANT = 1; private static int cnt; private static Object NULL; @@ -82,7 +83,7 @@ if (n <= 1) { return 1; } else { - return n * factRec(n - 1); + return n * factRec(n - MISSING_CONSTANT); } } public static long factIter(int n) {