launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader.java
1.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader.java Mon Jun 10 18:12:38 2013 +0200
1.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader.java Mon Jun 10 18:19:40 2013 +0200
1.3 @@ -22,7 +22,6 @@
1.4 import java.net.URL;
1.5 import java.net.URLClassLoader;
1.6 import java.util.ArrayList;
1.7 -import java.util.Arrays;
1.8 import java.util.List;
1.9 import org.objectweb.asm.AnnotationVisitor;
1.10 import org.objectweb.asm.ClassReader;
1.11 @@ -37,7 +36,7 @@
1.12 *
1.13 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
1.14 */
1.15 -public abstract class JsClassLoader extends URLClassLoader {
1.16 +abstract class JsClassLoader extends URLClassLoader {
1.17 JsClassLoader(URL[] urls, ClassLoader parent) {
1.18 super(urls, parent);
1.19 }
1.20 @@ -65,24 +64,15 @@
1.21 }
1.22 }
1.23 }
1.24 - if (name.startsWith("org.apidesign.bck2brwsr.launcher.fximpl.JsClassLoader")) {
1.25 + if (name.startsWith("org.apidesign.bck2brwsr.launcher.fximpl.Fn")) {
1.26 return Class.forName(name);
1.27 }
1.28
1.29 return super.findClass(name);
1.30 }
1.31
1.32 - public final Fn define(String code, String... names) {
1.33 - return defineFn(code, names);
1.34 - }
1.35 -
1.36 -
1.37 protected abstract Fn defineFn(String code, String... names);
1.38
1.39 - public static abstract class Fn {
1.40 - public abstract Object invoke(Object... args) throws Exception;
1.41 - }
1.42 -
1.43
1.44 private static final class FindInClass extends ClassVisitor {
1.45 private String name;
1.46 @@ -138,7 +128,7 @@
1.47 super.visitFieldInsn(
1.48 Opcodes.GETSTATIC, FindInClass.this.name,
1.49 "$$bck2brwsr$$" + name,
1.50 - "Lorg/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader$Fn;"
1.51 + "Lorg/apidesign/bck2brwsr/launcher/fximpl/Fn;"
1.52 );
1.53 super.visitInsn(Opcodes.DUP);
1.54 Label ifNotNull = new Label();
1.55 @@ -147,10 +137,6 @@
1.56 // init Fn
1.57 super.visitInsn(Opcodes.POP);
1.58 super.visitLdcInsn(Type.getObjectType(FindInClass.this.name));
1.59 - super.visitMethodInsn(Opcodes.INVOKEVIRTUAL,
1.60 - "java/lang/Class", "getClassLoader", "()Ljava/lang/ClassLoader;"
1.61 - );
1.62 - super.visitTypeInsn(Opcodes.CHECKCAST, "org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader");
1.63 super.visitLdcInsn(body);
1.64 super.visitIntInsn(Opcodes.SIPUSH, args.size());
1.65 super.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String");
1.66 @@ -161,9 +147,9 @@
1.67 super.visitLdcInsn(name);
1.68 super.visitInsn(Opcodes.AASTORE);
1.69 }
1.70 - super.visitMethodInsn(Opcodes.INVOKEVIRTUAL,
1.71 - "org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader",
1.72 - "define", "(Ljava/lang/String;[Ljava/lang/String;)Lorg/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader$Fn;"
1.73 + super.visitMethodInsn(Opcodes.INVOKESTATIC,
1.74 + "org/apidesign/bck2brwsr/launcher/fximpl/Fn", "define",
1.75 + "(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/String;)Lorg/apidesign/bck2brwsr/launcher/fximpl/Fn;"
1.76 );
1.77 // end of Fn init
1.78
1.79 @@ -171,7 +157,7 @@
1.80 super.visitIntInsn(Opcodes.SIPUSH, args.size());
1.81 super.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object");
1.82 super.visitMethodInsn(Opcodes.INVOKEVIRTUAL,
1.83 - "org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader$Fn", "invoke", "([Ljava/lang/Object;)Ljava/lang/Object;"
1.84 + "org/apidesign/bck2brwsr/launcher/fximpl/Fn", "invoke", "([Ljava/lang/Object;)Ljava/lang/Object;"
1.85 );
1.86 super.visitInsn(Opcodes.ARETURN);
1.87 }
1.88 @@ -183,7 +169,7 @@
1.89 FindInClass.this.visitField(
1.90 Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC,
1.91 "$$bck2brwsr$$" + name,
1.92 - "Lorg/apidesign/bck2brwsr/launcher/fximpl/JsClassLoader$Fn;",
1.93 + "Lorg/apidesign/bck2brwsr/launcher/fximpl/Fn;",
1.94 null, null
1.95 );
1.96 }