# HG changeset patch # User Jaroslav Tulach # Date 1442481165 -7200 # Node ID b5b0f3621f056eb27d534830daab98c731dc4acd # Parent e3c6cca3ef533b3ea4cf56e07e51473d0bb8006b Sending invoke message first to give a chance to object oriented languages to properly dispatch this/self diff -r e3c6cca3ef53 -r b5b0f3621f05 truffle/com.oracle.truffle.api.interop.java/src/com/oracle/truffle/api/interop/java/JavaInterop.java --- a/truffle/com.oracle.truffle.api.interop.java/src/com/oracle/truffle/api/interop/java/JavaInterop.java Wed Sep 16 21:32:52 2015 +0200 +++ b/truffle/com.oracle.truffle.api.interop.java/src/com/oracle/truffle/api/interop/java/JavaInterop.java Thu Sep 17 11:12:45 2015 +0200 @@ -346,10 +346,18 @@ } throw new IllegalStateException(attr + " cannot be invoked with " + args.length + " parameters"); } - List callArgs = new ArrayList<>(args.length + 1); - // callArgs.add(attr); - callArgs.addAll(Arrays.asList(args)); - Object ret = message(Message.createExecute(callArgs.size()), attr, callArgs.toArray()); + Object ret; + try { + List callArgs = new ArrayList<>(args.length); + callArgs.add(name); + callArgs.addAll(Arrays.asList(args)); + ret = message(Message.createInvoke(callArgs.size()), obj, callArgs.toArray()); + } catch (IllegalArgumentException ex) { + List callArgs = new ArrayList<>(args.length + 1); + // callArgs.add(attr); + callArgs.addAll(Arrays.asList(args)); + ret = message(Message.createExecute(callArgs.size()), attr, callArgs.toArray()); + } return toJava(ret, method); } throw new IllegalStateException("Unknown message: " + message); diff -r e3c6cca3ef53 -r b5b0f3621f05 truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLObjectType.java --- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLObjectType.java Wed Sep 16 21:32:52 2015 +0200 +++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/runtime/SLObjectType.java Thu Sep 17 11:12:45 2015 +0200 @@ -111,7 +111,7 @@ @Override public CallTarget accessInvoke(int argumentsLength) { - throw new UnsupportedOperationException(); + return null; } @Override