Mercurial > hg > truffle
diff graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/examples/RubyCall.java @ 20940:476374f3fe9a
Truffle-DSL: generate better polymorphic execute signatures
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Tue, 14 Apr 2015 15:12:48 +0200 |
parents | a79a3e467245 |
children |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/examples/RubyCall.java Tue Apr 14 15:12:48 2015 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/examples/RubyCall.java Tue Apr 14 15:12:48 2015 +0200 @@ -96,12 +96,12 @@ public static class RubyHeadNode extends ExampleNode { - @Child private RubyLookupNode lookup = RubyLookupNodeGen.create(null); - @Child private RubyDispatchNode dispatch = RubyDispatchNodeGen.create(null); + @Child private RubyLookupNode lookup = RubyLookupNodeGen.create(); + @Child private RubyDispatchNode dispatch = RubyDispatchNodeGen.create(); @Specialization - public Object doCall(VirtualFrame frame, Object receiverObject, Object methodName, Object blockObject, Object... argumentsObjects) { - InternalMethod method = lookup.executeLookup(frame, receiverObject, methodName); + public Object doCall(VirtualFrame frame, RubyObject receiverObject, Object methodName, Object blockObject, Object... argumentsObjects) { + InternalMethod method = lookup.executeLookup(receiverObject, methodName); Object[] packedArguments = new Object[argumentsObjects.length + 3]; packedArguments[0] = method; @@ -113,9 +113,9 @@ } } - public abstract static class RubyLookupNode extends ExampleNode { + public abstract static class RubyLookupNode extends Node { - public abstract InternalMethod executeLookup(VirtualFrame frame, Object receiverObject, Object methodName); + public abstract InternalMethod executeLookup(RubyObject receiver, Object method); @Specialization(guards = "receiver.getRubyClass() == cachedClass", assumptions = "cachedClass.getDependentAssumptions()") protected static InternalMethod cachedLookup(RubyObject receiver, Object name, // @@ -132,7 +132,7 @@ } @ImportStatic(InternalMethod.class) - public abstract static class RubyDispatchNode extends ExampleNode { + public abstract static class RubyDispatchNode extends Node { public abstract Object executeDispatch(VirtualFrame frame, InternalMethod function, Object[] packedArguments);