package mumbler.truffle.node.special;
import com.oracle.truffle.api.Truffle;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.NodeInfo;
import mumbler.truffle.node.MumblerNode;
import mumbler.truffle.node.call.InvokeNode;
@NodeInfo(shortName = "loop", description = "Repeats the function call forever")
public class LoopNode extends MumblerNode {
@Child private com.oracle.truffle.api.nodes.LoopNode loopNode;
private final String callString;
public LoopNode(InvokeNode callNode) {
this.callString = callNode.toString();
this.loopNode = Truffle.getRuntime().createLoopNode(
new LoopReapeatingNode(callNode));
}
@Override
public Object execute(VirtualFrame virtualFrame) {
this.loopNode.executeLoop(virtualFrame);
return null;
}
@Override
public String toString() {
return '\u331e' + this.callString;
}
}