diff -r a20721a10717 -r f36b3c273de6 vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java Mon Dec 10 12:03:22 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java Wed Dec 12 09:09:42 2012 +0100 @@ -21,6 +21,7 @@ import java.util.Map; import java.util.WeakHashMap; import javax.script.Invocable; +import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import org.testng.Assert; @@ -104,26 +105,17 @@ return; } StringBuilder sb = new StringBuilder(); - class SkipMe extends GenJS { - - public SkipMe(Appendable out) { - super(out); - } - - @Override - protected boolean requireReference(String cn) { - if (cn.contains("CompareVMs")) { - return true; - } - return super.requireReference(cn); - } - } - SkipMe sm = new SkipMe(sb); - sm.doCompile(CompareVMs.class.getClassLoader(), StringArray.asList( - clazz.getName().replace('.', '/'))); + Bck2Brwsr.generate(sb, CompareVMs.class.getClassLoader()); ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine js = sem.getEngineByExtension("js"); + js.getContext().setAttribute("loader", new BytesLoader(), ScriptContext.ENGINE_SCOPE); + + sb.append("\nfunction initVM() {" + + "\n return bck2brwsr(" + + "\n function(name) { return loader.get(name);}" + + "\n );" + + "\n};"); Object res = js.eval(sb.toString()); Assert.assertTrue(js instanceof Invocable, "It is invocable object: " + res); @@ -136,7 +128,8 @@ if (js) { try { compileTheCode(m.getDeclaringClass()); - Object inst = code.invokeFunction(m.getDeclaringClass().getName().replace('.', '_'), false); + Object vm = code.invokeFunction("initVM"); + Object inst = code.invokeMethod(vm, "loadClass", m.getDeclaringClass().getName()); value = code.invokeMethod(inst, m.getName() + "__" + computeSignature(m)); } catch (Exception ex) { throw new AssertionError(StaticMethodTest.dumpJS(codeSeq)).initCause(ex);