1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 17:43:15 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 18:34:12 2012 +0100
1.3 @@ -93,7 +93,7 @@
1.4 for (FieldData v : jc.getFields()) {
1.5 if (!v.isStatic()) {
1.6 out.append("\n this.fld_").
1.7 - append(v.getName()).append(" = 0;");
1.8 + append(v.getName()).append(initField(v));
1.9 }
1.10 }
1.11 out.append("\n}\n\nfunction ").append(className).append("_proto() {");
1.12 @@ -844,7 +844,7 @@
1.13 private void generateStaticField(FieldData v) throws IOException {
1.14 out.append("\nvar ")
1.15 .append(className(jc))
1.16 - .append('_').append(v.getName()).append(" = 0;");
1.17 + .append('_').append(v.getName()).append(initField(v));
1.18 }
1.19
1.20 private String findMethodName(MethodData m, StringBuilder cnt) {
1.21 @@ -1065,4 +1065,23 @@
1.22 ap.parse(arr, cd);
1.23 return found[0] ? values : null;
1.24 }
1.25 +
1.26 + private CharSequence initField(FieldData v) {
1.27 + final String is = v.getInternalSig();
1.28 + if (is.length() == 1) {
1.29 + switch (is.charAt(0)) {
1.30 + case 'S':
1.31 + case 'J':
1.32 + case 'B':
1.33 + case 'Z':
1.34 + case 'C':
1.35 + case 'I': return " = 0;";
1.36 + case 'F':
1.37 + case 'D': return " = 0.0";
1.38 + default:
1.39 + throw new IllegalStateException(is);
1.40 + }
1.41 + }
1.42 + return " = null;";
1.43 + }
1.44 }