diff -r 0d32bf6b4436 -r 10d26626c426 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun May 04 12:02:57 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue May 06 08:36:54 2014 +0200 @@ -2117,20 +2117,22 @@ default: throw new IllegalStateException("Array type: " + atype); } emit(smapper, this, - "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2I'](true, '@3', @1);", + "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2Ljava_lang_Object_2I'](true, '@3', null, @1);", smapper.popI(), smapper.pushA(), jvmType); } private void generateANewArray(int type, final StackMapper smapper) throws IOException { String typeName = jc.getClassName(type); + String ref = "null"; if (typeName.startsWith("[")) { - typeName = "[" + typeName; + typeName = "'[" + typeName + "'"; } else { - typeName = "[L" + typeName + ";"; + ref = "vm." + mangleClassName(typeName); + typeName = "'[L" + typeName + ";'"; } emit(smapper, this, - "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2I'](false, '@3', @1);", - smapper.popI(), smapper.pushA(), typeName); + "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2Ljava_lang_Object_2I'](false, @3, @4, @1);", + smapper.popI(), smapper.pushA(), typeName, ref); } private int generateMultiANewArray(int type, final byte[] byteCodes, int i, final StackMapper smapper) throws IOException {