public DirectCallNode createDirectCallNode(CallTarget target) { return new DefaultDirectCallNode(target); }
@Override public Object call(final VirtualFrame frame, Object[] arguments) { final CallTarget currentCallTarget = defaultTruffleRuntime().getCurrentFrame().getCallTarget(); FrameInstance frameInstance = new FrameInstance() { public Frame getFrame(FrameAccess access, boolean slowPath) { return frame; } public boolean isVirtualFrame() { return false; } public Node getCallNode() { return DefaultDirectCallNode.this; } public CallTarget getCallTarget() { return currentCallTarget; } }; defaultTruffleRuntime().pushFrame(frameInstance); try { return getCurrentCallTarget().call(arguments); } finally { defaultTruffleRuntime().popFrame(); } }
@Override public DirectCallNode createDirectCallNode(CallTarget target) { Objects.requireNonNull(target); return new DefaultDirectCallNode(target); }
@Override public DirectCallNode createDirectCallNode(CallTarget target) { Objects.requireNonNull(target); return new DefaultDirectCallNode(target); }