1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Wed May 28 14:35:21 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Thu May 29 09:57:01 2014 +0200
1.3 @@ -98,10 +98,9 @@
1.4 "\n var invoker = {};");
1.5 generateBody(names);
1.6 for (String invokerMethod: invokerMethods.toArray()) {
1.7 - append("\n invoker." + invokerMethod + " = function(target) {"
1.8 - + "\n return function() {"
1.9 - + "\n return target['" + invokerMethod + "'].apply(target, arguments);"
1.10 - + "\n };"
1.11 + append("\n invoker." + invokerMethod + " = function() {"
1.12 + + "\n var target = arguments[0];"
1.13 + + "\n return target['" + invokerMethod + "'].apply(target, Array.prototype.slice.call(arguments, 1));"
1.14 + "\n };"
1.15 );
1.16 }
1.17 @@ -366,9 +365,11 @@
1.18
1.19 @Override
1.20 protected String accessVirtualMethod(
1.21 - String object,
1.22 - String mangledName,
1.23 - String[] fieldInfoName) throws IOException {
1.24 + String object,
1.25 + String mangledName,
1.26 + String[] fieldInfoName,
1.27 + int params
1.28 + ) throws IOException {
1.29 final ClassData referencedClass =
1.30 classDataCache.getClassData(fieldInfoName[0]);
1.31 final MethodData method =
1.32 @@ -382,17 +383,17 @@
1.33 || ((referencedClass.getAccessFlags()
1.34 & ByteCodeParser.ACC_FINAL) != 0)
1.35 || !isHierarchyExported(method))) {
1.36 - return object + "." + mangledName;
1.37 + return object + "." + mangledName + '(';
1.38 }
1.39
1.40 - return accessThroughInvoker(object, mangledName);
1.41 + return accessThroughInvoker(object, mangledName, params > 1 ? "," : "");
1.42 }
1.43
1.44 - private String accessThroughInvoker(String object, String mangledName) {
1.45 + private String accessThroughInvoker(String object, String mangledName, String sep) {
1.46 if (!invokerMethods.contains(mangledName)) {
1.47 invokerMethods.add(mangledName);
1.48 }
1.49 - return "invoker." + mangledName + '(' + object + ')';
1.50 + return "invoker." + mangledName + '(' + object + sep;
1.51 }
1.52
1.53 private boolean isHierarchyExported(final MethodData methodData)