1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Mar 02 17:02:00 2013 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Mar 03 22:50:02 2013 +0100
1.3 @@ -994,9 +994,9 @@
1.4 dims.append('[');
1.5 for (int d = 0; d < dim; d++) {
1.6 if (d != 0) {
1.7 - dims.append(",");
1.8 + dims.insert(1, ",");
1.9 }
1.10 - dims.append(smapper.popI());
1.11 + dims.insert(1, smapper.popI());
1.12 }
1.13 dims.append(']');
1.14 emit(out, "var @2 = Array.prototype.multiNewArray__Ljava_lang_Object_2Ljava_lang_String_2_3II('@3', @1, 0);",
2.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Sat Mar 02 17:02:00 2013 +0100
2.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Sun Mar 03 22:50:02 2013 +0100
2.3 @@ -132,4 +132,8 @@
2.4 arraycopy(arr()[0][0].chars, 0, arr, 0, 1);
2.5 return arr[0];
2.6 }
2.7 +
2.8 + public static int multiLen() {
2.9 + return new int[1][0].length;
2.10 + }
2.11 }
3.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Sat Mar 02 17:02:00 2013 +0100
3.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Sun Mar 03 22:50:02 2013 +0100
3.3 @@ -75,6 +75,9 @@
3.4 @Test public void verifyInstanceOfArray() throws Exception {
3.5 assertExec("Returns 'false'", Array.class, "instanceOfArray__ZLjava_lang_Object_2", Double.valueOf(0), "non-array");
3.6 }
3.7 + @Test public void verifyMultiLen() throws Exception {
3.8 + assertExec("Multi len is one", Array.class, "multiLen__I", Double.valueOf(1));
3.9 + }
3.10
3.11 private static TestVM code;
3.12
4.1 --- a/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareByteArrayTest.java Sat Mar 02 17:02:00 2013 +0100
4.2 +++ b/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareByteArrayTest.java Sun Mar 03 22:50:02 2013 +0100
4.3 @@ -68,6 +68,16 @@
4.4 @Compare public String toOfBoundsMinus() {
4.5 return toIndex(-1);
4.6 }
4.7 +
4.8 + @Compare public int multiArrayLength() {
4.9 + int[][] arr = new int[1][0];
4.10 + return arr[0].length;
4.11 + }
4.12 +
4.13 + @Compare public int multiObjectArrayLength() {
4.14 + Object[][] arr = new Object[1][0];
4.15 + return arr[0].length;
4.16 + }
4.17
4.18 private static final int[] arr = { 0, 1, 2 };
4.19 public static String atIndex(int at) {