|
11 | 11 |
|
12 | 12 | import com.oracle.truffle.api.RootCallTarget;
|
13 | 13 | import com.oracle.truffle.api.dsl.Bind;
|
| 14 | +import com.oracle.truffle.api.dsl.GenerateCached; |
| 15 | +import com.oracle.truffle.api.dsl.GenerateInline; |
14 | 16 | import com.oracle.truffle.api.interop.InteropLibrary;
|
15 | 17 | import com.oracle.truffle.api.interop.UnsupportedMessageException;
|
16 | 18 | import com.oracle.truffle.api.object.Shape;
|
@@ -280,7 +282,7 @@ Object evalWithBlock(Frame callerFrame, Object self, Object[] rubyArgs, RootCall
|
280 | 282 | }
|
281 | 283 |
|
282 | 284 | final Object block = RubyArguments.getBlock(rubyArgs);
|
283 |
| - return instanceExecNode.execute(EmptyArgumentsDescriptor.INSTANCE, self, new Object[]{ self }, |
| 285 | + return instanceExecNode.execute(this, EmptyArgumentsDescriptor.INSTANCE, self, new Object[]{ self }, |
284 | 286 | (RubyProc) block);
|
285 | 287 | }
|
286 | 288 |
|
@@ -409,12 +411,15 @@ Object instanceExec(Object receiver, Object[] arguments, Nil block) {
|
409 | 411 | }
|
410 | 412 |
|
411 | 413 | @GenerateUncached
|
| 414 | + @GenerateCached(false) |
| 415 | + @GenerateInline |
412 | 416 | public abstract static class InstanceExecBlockNode extends RubyBaseNode {
|
413 | 417 |
|
414 |
| - public abstract Object execute(ArgumentsDescriptor descriptor, Object self, Object[] args, RubyProc block); |
| 418 | + public abstract Object execute(Node node, ArgumentsDescriptor descriptor, Object self, Object[] args, |
| 419 | + RubyProc block); |
415 | 420 |
|
416 | 421 | @Specialization
|
417 |
| - Object instanceExec(ArgumentsDescriptor descriptor, Object self, Object[] arguments, RubyProc block, |
| 422 | + static Object instanceExec(ArgumentsDescriptor descriptor, Object self, Object[] arguments, RubyProc block, |
418 | 423 | @Cached CallBlockNode callBlockNode) {
|
419 | 424 | final DeclarationContext declarationContext = new DeclarationContext(
|
420 | 425 | Visibility.PUBLIC,
|
|
0 commit comments