1.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Fri Jan 18 18:35:17 2013 +0100
1.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Fri Jan 18 18:52:02 2013 +0100
1.3 @@ -2,12 +2,6 @@
1.4 vm.java_lang_reflect_Array(false);
1.5 vm.java_lang_String(false);
1.6
1.7 -// we need initialized arrays
1.8 -Array.prototype.initWith = function(sig, value) {
1.9 - for(var i = 0; i < this.length; i++) this[i] = value;
1.10 - this.jvmName = sig;
1.11 - return this;
1.12 -};
1.13 Array.prototype.at = function(indx, value) {
1.14 if (indx < 0 || indx > this.length) {
1.15 var e = vm.java_lang_ArrayIndexOutOfBoundsException(true);
2.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Jan 18 18:35:17 2013 +0100
2.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Jan 18 18:52:02 2013 +0100
2.3 @@ -947,26 +947,17 @@
2.4 i += 2;
2.5 String typeName = jc.getClassName(type);
2.6 int dim = readByte(byteCodes, ++i);
2.7 - out.append("{ var a0 = new Array(").append(smapper.popI())
2.8 - .append(").initWith('").append(typeName).append("', null);");
2.9 - for (int d = 1; d < dim; d++) {
2.10 - typeName = typeName.substring(1);
2.11 - out.append("\n var l" + d).append(" = ")
2.12 - .append(smapper.popI()).append(';');
2.13 - out.append("\n for (var i" + d).append (" = 0; i" + d).
2.14 - append(" < a" + (d - 1)).
2.15 - append(".length; i" + d).append("++) {");
2.16 - out.append("\n var a" + d).
2.17 - append (" = new Array(l" + d).append(").initWith('")
2.18 - .append(typeName).append("', ")
2.19 - .append(typeName.length() == 2 ? "0" : "null").append(");");
2.20 - out.append("\n a" + (d - 1)).append("[i" + d).append("] = a" + d).
2.21 - append(";");
2.22 + StringBuilder dims = new StringBuilder();
2.23 + dims.append('[');
2.24 + for (int d = 0; d < dim; d++) {
2.25 + if (d != 0) {
2.26 + dims.append(",");
2.27 + }
2.28 + dims.append(smapper.popI());
2.29 }
2.30 - for (int d = 1; d < dim; d++) {
2.31 - out.append("\n }");
2.32 - }
2.33 - out.append("\n").append(smapper.pushA()).append(" = a0; }");
2.34 + dims.append(']');
2.35 + emit(out, "@2 = Array.prototype.multiNewArray__Ljava_lang_Object_2Ljava_lang_String_2_3II('@3', @1, 0);",
2.36 + dims.toString(), smapper.pushA(), typeName);
2.37 break;
2.38 }
2.39 case opc_arraylength: