diff -r d3df935aff70 -r e995e8d39240 rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Mon Apr 28 17:31:29 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Tue Apr 29 15:25:58 2014 +0200 @@ -86,17 +86,15 @@ private void doCompile(StringArray names, StringArray asBinary) throws IOException { generatePrologue(); out.append( - "\n var invoker = function Invoker() {" - + "\n return Invoker.target[Invoker.method]" - + ".apply(Invoker.target, arguments);" - + "\n };"); + "\n var invoker = {};"); generateBody(names); for (String invokerMethod: invokerMethods.toArray()) { out.append("\n invoker." + invokerMethod + " = function(target) {" - + "\n invoker.target = target;" - + "\n invoker.method = '" + invokerMethod + "';" - + "\n return invoker;" - + "\n };"); + + "\n return function() {" + + "\n return target['" + invokerMethod + "'].apply(target, arguments);" + + "\n };" + + "\n };" + ); } for (String r : asBinary.toArray()) {