diff -r ce34fdc36fac -r 228f26fc1159 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Sep 14 22:33:35 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Sep 23 21:52:27 2014 +0200 @@ -378,9 +378,11 @@ final LocalsMapper lmapper = new LocalsMapper(stackMapIterator.getArguments()); - boolean obj = "java/lang/Object".equals(jc.getClassName()); + boolean defineProp = + "java/lang/Object".equals(jc.getClassName()) || + "java/lang/reflect/Array".equals(jc.getClassName()); - if (obj) { + if (defineProp) { append("Object.defineProperty(").append(destObject). append(", '").append(name).append("', { configurable: true, writable: true, value: function("); } else { @@ -394,10 +396,11 @@ append(" throw 'no code found for ") .append(jc.getClassName()).append('.') .append(m.getName()).append("';\n"); - if (obj) { - append("}"); + if (defineProp) { + append("}});"); + } else { + append("};"); } - append("};"); return; } @@ -1463,7 +1466,7 @@ while (openBraces-- > 0) { append('}'); } - if (obj) { + if (defineProp) { append("\n}});"); } else { append("\n};");