Mercurial > hg > truffle
diff graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/IfNode.java @ 7503:31da1716950f
Updated truffle-sl for the changed operation code generation.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 18 Jan 2013 13:29:14 +0100 |
parents | 213c1297a814 |
children | 5e3d1a68664e |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/IfNode.java Fri Jan 18 13:28:12 2013 +0100 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/IfNode.java Fri Jan 18 13:29:14 2013 +0100 @@ -22,29 +22,38 @@ */ package com.oracle.truffle.sl.nodes; +import com.oracle.truffle.api.codegen.*; import com.oracle.truffle.api.frame.*; -public class IfNode extends StatementNode { +@ExecuteChildren("conditionNode") +public abstract class IfNode extends StatementNode { @Child - private ConditionNode condition; + protected ConditionNode conditionNode; + @Child - private StatementNode thenPart; + private StatementNode thenPartNode; + @Child - private StatementNode elsePart; + private StatementNode elsePartNode; public IfNode(ConditionNode condition, StatementNode thenPart, StatementNode elsePart) { - this.condition = adoptChild(condition); - this.thenPart = adoptChild(thenPart); - this.elsePart = adoptChild(elsePart); + this.conditionNode = adoptChild(condition); + this.thenPartNode = adoptChild(thenPart); + this.elsePartNode = adoptChild(elsePart); + } + + protected IfNode(IfNode node) { + this(node.conditionNode, node.thenPartNode, node.elsePartNode); } - @Override - public void executeVoid(VirtualFrame frame) { - if (condition.executeCondition(frame)) { - thenPart.executeVoid(frame); - } else if (elsePart != null) { - elsePart.executeVoid(frame); + @Specialization + public void doVoid(VirtualFrame frame, boolean condition) { + if (condition) { + thenPartNode.executeVoid(frame); + } else { + elsePartNode.executeVoid(frame); } } + }