1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun May 04 12:02:57 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue May 06 08:36:54 2014 +0200
1.3 @@ -2117,20 +2117,22 @@
1.4 default: throw new IllegalStateException("Array type: " + atype);
1.5 }
1.6 emit(smapper, this,
1.7 - "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2I'](true, '@3', @1);",
1.8 + "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2Ljava_lang_Object_2I'](true, '@3', null, @1);",
1.9 smapper.popI(), smapper.pushA(), jvmType);
1.10 }
1.11
1.12 private void generateANewArray(int type, final StackMapper smapper) throws IOException {
1.13 String typeName = jc.getClassName(type);
1.14 + String ref = "null";
1.15 if (typeName.startsWith("[")) {
1.16 - typeName = "[" + typeName;
1.17 + typeName = "'[" + typeName + "'";
1.18 } else {
1.19 - typeName = "[L" + typeName + ";";
1.20 + ref = "vm." + mangleClassName(typeName);
1.21 + typeName = "'[L" + typeName + ";'";
1.22 }
1.23 emit(smapper, this,
1.24 - "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2I'](false, '@3', @1);",
1.25 - smapper.popI(), smapper.pushA(), typeName);
1.26 + "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2Ljava_lang_Object_2I'](false, @3, @4, @1);",
1.27 + smapper.popI(), smapper.pushA(), typeName, ref);
1.28 }
1.29
1.30 private int generateMultiANewArray(int type, final byte[] byteCodes, int i, final StackMapper smapper) throws IOException {