# HG changeset patch # User Jaroslav Tulach # Date 1357208962 -3600 # Node ID 2670f519a46d33d7eab6836e732a3107f7838ad6 # Parent e41809be6106c844f205c5e4e982f3512e315679 Using 'o' instead of full name of java.lang.Object diff -r e41809be6106 -r 2670f519a46d emul/src/main/java/java/lang/reflect/Method.java --- a/emul/src/main/java/java/lang/reflect/Method.java Thu Jan 03 11:20:40 2013 +0100 +++ b/emul/src/main/java/java/lang/reflect/Method.java Thu Jan 03 11:29:22 2013 +0100 @@ -149,6 +149,7 @@ case 'Z': return Boolean.TYPE; case 'S': return Short.TYPE; case 's': return String.class; + case 'o': return Object.class; // case 'V': return Void.TYPE; case 'L': try { int up = sig.indexOf("_2"); diff -r e41809be6106 -r 2670f519a46d emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Thu Jan 03 11:20:40 2013 +0100 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Thu Jan 03 11:29:22 2013 +0100 @@ -6,7 +6,7 @@ for(var i = 0; i < this.length; i++) this[i] = null; return this; }; -Array.prototype.clone__Ljava_lang_Object_2 = function() { +Array.prototype.clone__o = function() { var s = this.length; var ret = new Array(s); for (var i = 0; i < s; i++) { diff -r e41809be6106 -r 2670f519a46d vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Jan 03 11:20:40 2013 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Jan 03 11:29:22 2013 +0100 @@ -19,7 +19,6 @@ import java.io.IOException; import java.io.InputStream; -import org.apidesign.bck2brwsr.core.JavaScriptBody; import org.apidesign.javap.AnnotationParser; import org.apidesign.javap.ClassData; import org.apidesign.javap.FieldData; @@ -1272,16 +1271,20 @@ default: sb.append(ch); break; } } - final String strng = "Ljava_lang_String_2"; - for(;;) { + shortenSig(sb, "Ljava_lang_String_2", 's'); + shortenSig(sb, "Ljava_lang_Object_2", 'o'); + return sb.toString(); + } + + private static void shortenSig(StringBuilder sb, String strng, char r) { + for (;;) { int pos = sb.indexOf(strng); if (pos == -1) { break; } sb.delete(pos, pos + strng.length()); - sb.insert(pos, 's'); + sb.insert(pos, r); } - return sb.toString(); } private static String findMethodName(MethodData m, StringBuilder cnt) { diff -r e41809be6106 -r 2670f519a46d vm/src/main/java/org/apidesign/vm4brwsr/VM.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Thu Jan 03 11:20:40 2013 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Thu Jan 03 11:29:22 2013 +0100 @@ -122,7 +122,7 @@ + " if (fn) return fn(false);\n" + " if (!args[0]) throw 'bck2brwsr initialized without loader function, cannot load ' + name;\n" + " return vm.org_apidesign_vm4brwsr_VMLazy(false).\n" - + " load___3Ljava_lang_Object_2Ljava_lang_Object_2s_3Ljava_lang_Object_2(loader, name, args);\n" + + " load___3oos_3o(loader, name, args);\n" + " }\n" + " if (args[0]) vm.loadClass = loader.loadClass;\n" + " return loader;\n" diff -r e41809be6106 -r 2670f519a46d vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Thu Jan 03 11:20:40 2013 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Thu Jan 03 11:29:22 2013 +0100 @@ -122,7 +122,7 @@ + "\nif (vm[cls]) return false;" + "\nvm[cls] = function() {" + "\n var instance = arguments.length == 0 || arguments[0] === true;" - + "\n return lazy.load__Ljava_lang_Object_2sZ(lazy, dot, instance);" + + "\n return lazy.load__osZ(lazy, dot, instance);" + "\n};" + "\nreturn true;") @Override diff -r e41809be6106 -r 2670f519a46d vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Thu Jan 03 11:20:40 2013 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Thu Jan 03 11:29:22 2013 +0100 @@ -98,7 +98,7 @@ } @Test public void jsInvokeMethod() throws Exception { assertExec("Calls the name() method via reflection", Classes.class, - "reflectiveMethodCall__Ljava_lang_Object_2Zs", + "reflectiveMethodCall__oZs", "java.io.IOException", true, "name" ); } @@ -107,7 +107,7 @@ } @Test public void jsFindMethod() throws Exception { assertExec("Calls the name() method via reflection", Classes.class, - "reflectiveMethodCall__Ljava_lang_Object_2Zs", + "reflectiveMethodCall__oZs", "java.io.IOException", false, "name" ); } @@ -128,7 +128,7 @@ } @Test public void jsAnnotatedMethod() throws Exception { assertExec("Calls the name() method via reflection", Classes.class, - "reflectiveMethodCall__Ljava_lang_Object_2Zs", + "reflectiveMethodCall__oZs", "java.io.IOException", false, null ); } diff -r e41809be6106 -r 2670f519a46d vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Thu Jan 03 11:20:40 2013 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Thu Jan 03 11:29:22 2013 +0100 @@ -135,7 +135,7 @@ @Test public void nullCheck() throws Exception { assertExec( "Returns nothing", - StaticMethod.class, "none__Ljava_lang_Object_2II", + StaticMethod.class, "none__oII", null, 1, 3 ); }