Shortening the generated code by providing shorter new array methods ReducedStack
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Tue, 18 Feb 2014 22:29:25 +0100
branchReducedStack
changeset 1479be34f84e9d9f
parent 1477 b012365f8fb7
Shortening the generated code by providing shorter new array methods
rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js
rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
     1.1 --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js	Tue Feb 18 22:20:50 2014 +0100
     1.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js	Tue Feb 18 22:29:25 2014 +0100
     1.3 @@ -13,6 +13,8 @@
     1.4    }
     1.5    return arr[indx];
     1.6  };
     1.7 +Array.alloc = Array.prototype.newArray__Ljava_lang_Object_2ZLjava_lang_String_2I;
     1.8 +Array.malloc = Array.prototype.multiNewArray__Ljava_lang_Object_2Ljava_lang_String_2_3II;
     1.9  Array.prototype.getClass__Ljava_lang_Class_2 = function() {
    1.10    return vm.java_lang_Class(false).defineArray__Ljava_lang_Class_2Ljava_lang_String_2(this.jvmName);
    1.11  };
     2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Feb 18 22:20:50 2014 +0100
     2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Feb 18 22:29:25 2014 +0100
     2.3 @@ -2056,7 +2056,7 @@
     2.4              case 11: jvmType = "[J"; break;
     2.5              default: throw new IllegalStateException("Array type: " + atype);
     2.6          }
     2.7 -        emit(smapper, out, "var @2 = Array.prototype.newArray__Ljava_lang_Object_2ZLjava_lang_String_2I(true, '@3', @1);",
     2.8 +        emit(smapper, out, "var @2 = Array.alloc(true, '@3', @1);",
     2.9               smapper.popI(), smapper.pushA(), jvmType);
    2.10      }
    2.11  
    2.12 @@ -2067,7 +2067,7 @@
    2.13          } else {
    2.14              typeName = "[L" + typeName + ";";
    2.15          }
    2.16 -        emit(smapper, out, "var @2 = Array.prototype.newArray__Ljava_lang_Object_2ZLjava_lang_String_2I(false, '@3', @1);",
    2.17 +        emit(smapper, out, "var @2 = Array.alloc(false, '@3', @1);",
    2.18               smapper.popI(), smapper.pushA(), typeName);
    2.19      }
    2.20  
    2.21 @@ -2083,7 +2083,7 @@
    2.22              dims.insert(1, smapper.popI());
    2.23          }
    2.24          dims.append(']');
    2.25 -        emit(smapper, out, "var @2 = Array.prototype.multiNewArray__Ljava_lang_Object_2Ljava_lang_String_2_3II('@3', @1, 0);",
    2.26 +        emit(smapper, out, "var @2 = Array.malloc('@3', @1, 0);",
    2.27               dims.toString(), smapper.pushA(), typeName);
    2.28          return i;
    2.29      }