# HG changeset patch # User Tom Rodriguez # Date 1408667400 25200 # Node ID b61b88c9c103cc540ec90efdddf4a78a76afce3b # Parent 36b884b9bb3a7019c44c56ad829cbb0ab24140b5 Make handling of removeNeverExecutedCode more consistent diff -r 36b884b9bb3a -r b61b88c9c103 graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java --- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Thu Aug 21 17:20:00 2014 -0700 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Thu Aug 21 17:30:00 2014 -0700 @@ -400,20 +400,7 @@ return; } - double probability = profilingInfo.getBranchTakenProbability(bci()); - if (probability < 0) { - assert probability == -1 : "invalid probability"; - Debug.log("missing probability in %s at bci %d", method, bci()); - probability = 0.5; - } - - if (!optimisticOpts.removeNeverExecutedCode()) { - if (probability == 0) { - probability = 0.0000001; - } else if (probability == 1) { - probability = 0.999999; - } - } + double probability = branchProbability(); LabelRef trueDestination = getSuccessor(0); LabelRef falseDestination = getSuccessor(1); diff -r 36b884b9bb3a -r b61b88c9c103 graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Thu Aug 21 17:20:00 2014 -0700 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Thu Aug 21 17:30:00 2014 -0700 @@ -896,6 +896,28 @@ return probability == 0 && optimisticOpts.removeNeverExecutedCode() && entryBCI == StructuredGraph.INVOCATION_ENTRY_BCI; } + protected double branchProbability() { + double probability = profilingInfo.getBranchTakenProbability(bci()); + if (probability < 0) { + assert probability == -1 : "invalid probability"; + Debug.log("missing probability in %s at bci %d", method, bci()); + probability = 0.5; + } + + if (!removeNeverExecutedCode()) { + if (probability == 0) { + probability = 0.0000001; + } else if (probability == 1) { + probability = 0.999999; + } + } + return probability; + } + + protected boolean removeNeverExecutedCode() { + return optimisticOpts.removeNeverExecutedCode() && entryBCI == StructuredGraph.INVOCATION_ENTRY_BCI; + } + protected abstract void processBlock(BciBlock block); protected abstract void iterateBytecodesForBlock(BciBlock block); diff -r 36b884b9bb3a -r b61b88c9c103 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Thu Aug 21 17:20:00 2014 -0700 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Thu Aug 21 17:30:00 2014 -0700 @@ -1397,20 +1397,7 @@ return; } - double probability = profilingInfo.getBranchTakenProbability(bci()); - if (probability < 0) { - assert probability == -1 : "invalid probability"; - Debug.log("missing probability in %s at bci %d", method, bci()); - probability = 0.5; - } - - if (!optimisticOpts.removeNeverExecutedCode()) { - if (probability == 0) { - probability = 0.0000001; - } else if (probability == 1) { - probability = 0.999999; - } - } + double probability = branchProbability(); // the mirroring and negation operations get the condition into canonical form boolean mirror = cond.canonicalMirror();