vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchjavap
changeset 172 9eb74b221cff
parent 171 f61602ea7759
child 173 2f0205599623
     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                      }