1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 16:15:10 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 17:43:15 2012 +0100
1.3 @@ -592,25 +592,25 @@
1.4 }
1.5 case opc_newarray: {
1.6 int type = byteCodes[i++];
1.7 - out.append("stack.push(new Array(stack.pop()));");
1.8 + out.append("stack.push(new Array(stack.pop()).fillNulls());");
1.9 break;
1.10 }
1.11 case opc_anewarray: {
1.12 i += 2; // skip type of array
1.13 - out.append("stack.push(new Array(stack.pop()));");
1.14 + out.append("stack.push(new Array(stack.pop()).fillNulls());");
1.15 break;
1.16 }
1.17 case opc_multianewarray: {
1.18 i += 2;
1.19 int dim = readByte(byteCodes, ++i);
1.20 - out.append("{ var a0 = new Array(stack.pop());");
1.21 + out.append("{ var a0 = new Array(stack.pop()).fillNulls();");
1.22 for (int d = 1; d < dim; d++) {
1.23 out.append("\n var l" + d).append(" = stack.pop();");
1.24 out.append("\n for (var i" + d).append (" = 0; i" + d).
1.25 append(" < a" + (d - 1)).
1.26 append(".length; i" + d).append("++) {");
1.27 out.append("\n var a" + d).
1.28 - append (" = new Array(l" + d).append(");");
1.29 + append (" = new Array(l" + d).append(").fillNulls();");
1.30 out.append("\n a" + (d - 1)).append("[i" + d).append("] = a" + d).
1.31 append(";");
1.32 }