Using 'o' instead of full name of java.lang.Object TypeNickNames
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 03 Jan 2013 11:29:22 +0100
branchTypeNickNames
changeset 4062670f519a46d
parent 405 e41809be6106
Using 'o' instead of full name of java.lang.Object
emul/src/main/java/java/lang/reflect/Method.java
emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js
vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
vm/src/main/java/org/apidesign/vm4brwsr/VM.java
vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java
vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java
vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java
     1.1 --- a/emul/src/main/java/java/lang/reflect/Method.java	Thu Jan 03 11:20:40 2013 +0100
     1.2 +++ b/emul/src/main/java/java/lang/reflect/Method.java	Thu Jan 03 11:29:22 2013 +0100
     1.3 @@ -149,6 +149,7 @@
     1.4              case 'Z': return Boolean.TYPE;
     1.5              case 'S': return Short.TYPE;
     1.6              case 's': return String.class;
     1.7 +            case 'o': return Object.class;
     1.8  //            case 'V': return Void.TYPE;
     1.9              case 'L': try {
    1.10                  int up = sig.indexOf("_2");
     2.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js	Thu Jan 03 11:20:40 2013 +0100
     2.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js	Thu Jan 03 11:29:22 2013 +0100
     2.3 @@ -6,7 +6,7 @@
     2.4    for(var i = 0; i < this.length; i++) this[i] = null;
     2.5    return this;
     2.6  };
     2.7 -Array.prototype.clone__Ljava_lang_Object_2 = function() {
     2.8 +Array.prototype.clone__o = function() {
     2.9    var s = this.length;
    2.10    var ret = new Array(s);
    2.11    for (var i = 0; i < s; i++) {
     3.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Thu Jan 03 11:20:40 2013 +0100
     3.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Thu Jan 03 11:29:22 2013 +0100
     3.3 @@ -19,7 +19,6 @@
     3.4  
     3.5  import java.io.IOException;
     3.6  import java.io.InputStream;
     3.7 -import org.apidesign.bck2brwsr.core.JavaScriptBody;
     3.8  import org.apidesign.javap.AnnotationParser;
     3.9  import org.apidesign.javap.ClassData;
    3.10  import org.apidesign.javap.FieldData;
    3.11 @@ -1272,16 +1271,20 @@
    3.12                  default: sb.append(ch); break;
    3.13              }
    3.14          }
    3.15 -        final String strng = "Ljava_lang_String_2";
    3.16 -        for(;;) {
    3.17 +        shortenSig(sb, "Ljava_lang_String_2", 's');
    3.18 +        shortenSig(sb, "Ljava_lang_Object_2", 'o');
    3.19 +        return sb.toString();
    3.20 +    }
    3.21 +    
    3.22 +    private static void shortenSig(StringBuilder sb, String strng, char r) {
    3.23 +        for (;;) {
    3.24              int pos = sb.indexOf(strng);
    3.25              if (pos == -1) {
    3.26                  break;
    3.27              }
    3.28              sb.delete(pos, pos + strng.length());
    3.29 -            sb.insert(pos, 's');
    3.30 +            sb.insert(pos, r);
    3.31          }
    3.32 -        return sb.toString();
    3.33      }
    3.34      
    3.35      private static String findMethodName(MethodData m, StringBuilder cnt) {
     4.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Thu Jan 03 11:20:40 2013 +0100
     4.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Thu Jan 03 11:29:22 2013 +0100
     4.3 @@ -122,7 +122,7 @@
     4.4              + "      if (fn) return fn(false);\n"
     4.5              + "      if (!args[0]) throw 'bck2brwsr initialized without loader function, cannot load ' + name;\n"
     4.6              + "      return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
     4.7 -            + "        load___3Ljava_lang_Object_2Ljava_lang_Object_2s_3Ljava_lang_Object_2(loader, name, args);\n"
     4.8 +            + "        load___3oos_3o(loader, name, args);\n"
     4.9              + "    }\n"
    4.10              + "    if (args[0]) vm.loadClass = loader.loadClass;\n"
    4.11              + "    return loader;\n"
     5.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java	Thu Jan 03 11:20:40 2013 +0100
     5.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java	Thu Jan 03 11:29:22 2013 +0100
     5.3 @@ -122,7 +122,7 @@
     5.4          + "\nif (vm[cls]) return false;"
     5.5          + "\nvm[cls] = function() {"
     5.6          + "\n  var instance = arguments.length == 0 || arguments[0] === true;"
     5.7 -        + "\n  return lazy.load__Ljava_lang_Object_2sZ(lazy, dot, instance);"
     5.8 +        + "\n  return lazy.load__osZ(lazy, dot, instance);"
     5.9          + "\n};"
    5.10          + "\nreturn true;")
    5.11          @Override
     6.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java	Thu Jan 03 11:20:40 2013 +0100
     6.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java	Thu Jan 03 11:29:22 2013 +0100
     6.3 @@ -98,7 +98,7 @@
     6.4      }
     6.5      @Test public void jsInvokeMethod() throws Exception {
     6.6          assertExec("Calls the name() method via reflection", Classes.class, 
     6.7 -            "reflectiveMethodCall__Ljava_lang_Object_2Zs", 
     6.8 +            "reflectiveMethodCall__oZs", 
     6.9              "java.io.IOException", true, "name"
    6.10          );
    6.11      }
    6.12 @@ -107,7 +107,7 @@
    6.13      }
    6.14      @Test public void jsFindMethod() throws Exception {
    6.15          assertExec("Calls the name() method via reflection", Classes.class, 
    6.16 -            "reflectiveMethodCall__Ljava_lang_Object_2Zs", 
    6.17 +            "reflectiveMethodCall__oZs", 
    6.18              "java.io.IOException", false, "name"
    6.19          );
    6.20      }
    6.21 @@ -128,7 +128,7 @@
    6.22      }
    6.23      @Test public void jsAnnotatedMethod() throws Exception {
    6.24          assertExec("Calls the name() method via reflection", Classes.class, 
    6.25 -            "reflectiveMethodCall__Ljava_lang_Object_2Zs", 
    6.26 +            "reflectiveMethodCall__oZs", 
    6.27              "java.io.IOException", false, null
    6.28          );
    6.29      }
     7.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java	Thu Jan 03 11:20:40 2013 +0100
     7.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java	Thu Jan 03 11:29:22 2013 +0100
     7.3 @@ -135,7 +135,7 @@
     7.4      @Test public void nullCheck() throws Exception {
     7.5          assertExec(
     7.6              "Returns nothing",
     7.7 -            StaticMethod.class, "none__Ljava_lang_Object_2II",
     7.8 +            StaticMethod.class, "none__oII",
     7.9              null, 1, 3
    7.10          );
    7.11      }