diff -r f61602ea7759 -r 9eb74b221cff vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 16:15:10 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 17:43:15 2012 +0100 @@ -592,25 +592,25 @@ } case opc_newarray: { int type = byteCodes[i++]; - out.append("stack.push(new Array(stack.pop()));"); + out.append("stack.push(new Array(stack.pop()).fillNulls());"); break; } case opc_anewarray: { i += 2; // skip type of array - out.append("stack.push(new Array(stack.pop()));"); + out.append("stack.push(new Array(stack.pop()).fillNulls());"); break; } case opc_multianewarray: { i += 2; int dim = readByte(byteCodes, ++i); - out.append("{ var a0 = new Array(stack.pop());"); + out.append("{ var a0 = new Array(stack.pop()).fillNulls();"); for (int d = 1; d < dim; d++) { out.append("\n var l" + d).append(" = stack.pop();"); out.append("\n for (var i" + d).append (" = 0; i" + d). append(" < a" + (d - 1)). append(".length; i" + d).append("++) {"); out.append("\n var a" + d). - append (" = new Array(l" + d).append(");"); + append (" = new Array(l" + d).append(").fillNulls();"); out.append("\n a" + (d - 1)).append("[i" + d).append("] = a" + d). append(";"); }