rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchclosure
changeset 1532 10d26626c426
parent 1522 0d32bf6b4436
child 1534 ca538fb33f48
     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 {