Mercurial > hg > graal-compiler
diff graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/IfNode.java @ 13336:d4c6dd07be76
SL: added exemplary uses of new profiling utility BranchProfile to SL.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Sun, 15 Dec 2013 22:20:12 +0100 |
parents | 71991b7a0f14 |
children |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/IfNode.java Sun Dec 15 22:19:19 2013 +0100 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/IfNode.java Sun Dec 15 22:20:12 2013 +0100 @@ -24,6 +24,7 @@ import com.oracle.truffle.api.dsl.*; import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.utilities.*; @NodeChild(value = "conditionNode", type = ConditionNode.class) public abstract class IfNode extends StatementNode { @@ -31,6 +32,9 @@ @Child private StatementNode thenPartNode; @Child private StatementNode elsePartNode; + private final BranchProfile ifBranch = new BranchProfile(); + private final BranchProfile elseBranch = new BranchProfile(); + public IfNode(StatementNode thenPart, StatementNode elsePart) { this.thenPartNode = adoptChild(thenPart); this.elsePartNode = adoptChild(elsePart); @@ -43,9 +47,11 @@ @Specialization public void doVoid(VirtualFrame frame, boolean condition) { if (condition) { + ifBranch.enter(); thenPartNode.executeVoid(frame); } else { if (elsePartNode != null) { + elseBranch.enter(); elsePartNode.executeVoid(frame); } }