# HG changeset patch # User Lubomir Nerad # Date 1369040387 -7200 # Node ID 47c1fc251d84d34c3fed62b1b900b7c963654472 # Parent 36961c9a009f50a8be7cc343cd68d193233cb9bb Obfuscation fixes to allow run demo-calculator as an external module diff -r 36961c9a009f -r 47c1fc251d84 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/package-info.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/api/package-info.java Mon May 20 10:59:47 2013 +0200 @@ -0,0 +1,21 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +@Exported +package org.apidesign.bck2brwsr.htmlpage.api; + +import org.apidesign.bck2brwsr.core.Exported; diff -r 36961c9a009f -r 47c1fc251d84 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/package-info.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/package-info.java Mon May 20 10:59:47 2013 +0200 @@ -0,0 +1,21 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +@Exported +package org.apidesign.bck2brwsr.htmlpage; + +import org.apidesign.bck2brwsr.core.Exported; diff -r 36961c9a009f -r 47c1fc251d84 rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java --- a/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java Mon May 13 18:54:50 2013 +0200 +++ b/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java Mon May 20 10:59:47 2013 +0200 @@ -67,6 +67,15 @@ @Parameter(defaultValue="NONE") private ObfuscationLevel obfuscation; + /** + * Indicates whether to create an extension module instead of a standalone + * JavaScript VM. + * + * @since 0.6 + */ + @Parameter(defaultValue="false") + private boolean extension; + @Override public void execute() throws MojoExecutionException { if (!classes.isDirectory()) { @@ -90,6 +99,7 @@ FileWriter w = new FileWriter(javascript); Bck2Brwsr.newCompiler(). obfuscation(obfuscation). + extension(extension). resources(url). addRootClasses(arr.toArray(new String[0])). generate(w); diff -r 36961c9a009f -r 47c1fc251d84 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon May 13 18:54:50 2013 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon May 20 10:59:47 2013 +0200 @@ -1587,7 +1587,7 @@ String s = jc.stringValue(entryIndex, classRef); if (classRef[0] != null) { if (classRef[0].startsWith("[")) { - s = accessClass("java_lang_Class") + "(false).forName__Ljava_lang_Class_2Ljava_lang_String_2('" + classRef[0] + "');"; + s = accessClass("java_lang_Class") + "(false)['forName__Ljava_lang_Class_2Ljava_lang_String_2']('" + classRef[0] + "');"; } else { addReference(classRef[0]); s = accessClass(s.replace('/', '_')) + "(false).constructor.$class"; @@ -1819,7 +1819,7 @@ out.append(" var stA0 = e;"); out.append("} else {"); out.append(" var stA0 = vm.java_lang_Throwable(true);"); - out.append(" vm.java_lang_Throwable.cons__VLjava_lang_String_2.call(stA0, e.toString());"); + out.append(" vm.java_lang_Throwable['cons__VLjava_lang_String_2'].call(stA0, e.toString());"); out.append("}"); goTo(out, current, e.handler_pc, topMostLabel); } else { @@ -1874,7 +1874,7 @@ case 11: jvmType = "[J"; break; default: throw new IllegalStateException("Array type: " + atype); } - emit(out, "var @2 = Array.prototype.newArray__Ljava_lang_Object_2ZLjava_lang_String_2I(true, '@3', @1);", + emit(out, "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2I'](true, '@3', @1);", smapper.popI(), smapper.pushA(), jvmType); } @@ -1885,7 +1885,7 @@ } else { typeName = "[L" + typeName + ";"; } - emit(out, "var @2 = Array.prototype.newArray__Ljava_lang_Object_2ZLjava_lang_String_2I(false, '@3', @1);", + emit(out, "var @2 = Array.prototype['newArray__Ljava_lang_Object_2ZLjava_lang_String_2I'](false, '@3', @1);", smapper.popI(), smapper.pushA(), typeName); } @@ -1901,7 +1901,7 @@ dims.insert(1, smapper.popI()); } dims.append(']'); - emit(out, "var @2 = Array.prototype.multiNewArray__Ljava_lang_Object_2Ljava_lang_String_2_3II('@3', @1, 0);", + emit(out, "var @2 = Array.prototype['multiNewArray__Ljava_lang_Object_2Ljava_lang_String_2_3II']('@3', @1, 0);", dims.toString(), smapper.pushA(), typeName); return i; } @@ -1956,7 +1956,7 @@ smapper.popA(), smapper.pushI(), type.replace('/', '_')); } else { - emit(out, "var @2 = vm.java_lang_Class(false).forName__Ljava_lang_Class_2Ljava_lang_String_2('@3').isInstance__ZLjava_lang_Object_2(@1);", + emit(out, "var @2 = vm.java_lang_Class(false)['forName__Ljava_lang_Class_2Ljava_lang_String_2']('@3')['isInstance__ZLjava_lang_Object_2'](@1);", smapper.popA(), smapper.pushI(), type ); @@ -1970,7 +1970,7 @@ "if (@1 !== null && !@1['$instOf_@2']) throw vm.java_lang_ClassCastException(true);", smapper.getA(0), type.replace('/', '_')); } else { - emit(out, "vm.java_lang_Class(false).forName__Ljava_lang_Class_2Ljava_lang_String_2('@2').cast__Ljava_lang_Object_2Ljava_lang_Object_2(@1);", + emit(out, "vm.java_lang_Class(false)['forName__Ljava_lang_Class_2Ljava_lang_String_2']('@2')['cast__Ljava_lang_Object_2Ljava_lang_Object_2'](@1);", smapper.getA(0), type ); }