Mercurial > hg > graal-jvmci-8
changeset 17381:40dce17629ac
correct IfNode probabilities in If-Deopt situations
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Wed, 08 Oct 2014 10:49:53 +0200 |
parents | 4b94e5f3d823 |
children | e1da729b3e4e |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java |
diffstat | 1 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Wed Oct 08 10:49:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Wed Oct 08 10:49:53 2014 +0200 @@ -49,6 +49,8 @@ @NodeInfo public class IfNode extends ControlSplitNode implements Simplifiable, LIRLowerable { + private static final DebugMetric CORRECTED_PROBABILITIES = Debug.metric("CorrectedProbabilities"); + @Successor BeginNode trueSuccessor; @Successor BeginNode falseSuccessor; @Input(InputType.Condition) LogicNode condition; @@ -147,6 +149,18 @@ @Override public void simplify(SimplifierTool tool) { + if (trueSuccessor().next() instanceof DeoptimizeNode) { + if (trueSuccessorProbability != 0) { + CORRECTED_PROBABILITIES.increment(); + trueSuccessorProbability = 0; + } + } else if (falseSuccessor().next() instanceof DeoptimizeNode) { + if (trueSuccessorProbability != 1) { + CORRECTED_PROBABILITIES.increment(); + trueSuccessorProbability = 1; + } + } + if (condition() instanceof LogicNegationNode) { BeginNode trueSucc = trueSuccessor(); BeginNode falseSucc = falseSuccessor();