Mercurial > hg > truffle
changeset 19101:212299803bf6
Merge
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Tue, 03 Feb 2015 17:03:19 +0100 |
parents | d2ec5e56ed31 (diff) 9865883b5114 (current diff) |
children | 026749fff52c |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/InstructionNumberer.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/stackslotalloc/StackUsePosList.java graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformHighPhase.java graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformLowPhase.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/VerifyNoIntrinsicsLeftPhase.java |
diffstat | 2 files changed, 17 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Tue Feb 03 15:29:03 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Tue Feb 03 17:03:19 2015 +0100 @@ -69,18 +69,21 @@ @Override public void lower(LoweringTool tool) { - /* - * Don't allow guards with action None and reason RuntimeConstraint to float. In cases where - * 2 guards are testing equivalent conditions they might be lowered at the same location. If - * the guard with the None action is lowered before the the other guard then the code will - * be stuck repeatedly deoptimizing without invalidating the code. Conditional elimination - * will eliminate the guard if it's truly redundant in this case. - */ - if (graph().getGuardsStage().allowsFloatingGuards() && (getAction() != DeoptimizationAction.None || getReason() != DeoptimizationReason.RuntimeConstraint)) { - ValueNode guard = tool.createGuard(this, condition(), getReason(), getAction(), isNegated()).asNode(); - this.replaceAtUsages(guard); - ValueAnchorNode newAnchor = graph().add(new ValueAnchorNode(guard.asNode())); - graph().replaceFixedWithFixed(this, newAnchor); + if (graph().getGuardsStage().allowsFloatingGuards()) { + /* + * Don't allow guards with action None and reason RuntimeConstraint to float. In cases + * where 2 guards are testing equivalent conditions they might be lowered at the same + * location. If the guard with the None action is lowered before the the other guard + * then the code will be stuck repeatedly deoptimizing without invalidating the code. + * Conditional elimination will eliminate the guard if it's truly redundant in this + * case. + */ + if (getAction() != DeoptimizationAction.None || getReason() != DeoptimizationReason.RuntimeConstraint) { + ValueNode guard = tool.createGuard(this, condition(), getReason(), getAction(), isNegated()).asNode(); + this.replaceAtUsages(guard); + ValueAnchorNode newAnchor = graph().add(new ValueAnchorNode(guard.asNode())); + graph().replaceFixedWithFixed(this, newAnchor); + } } else { lowerToIf().lower(tool); }
--- a/test/blacklist_sparc.txt Tue Feb 03 15:29:03 2015 +0100 +++ b/test/blacklist_sparc.txt Tue Feb 03 17:03:19 2015 +0100 @@ -1,5 +1,4 @@ com.oracle.graal.replacements.test.StandardMethodSubstitutionsTest com.oracle.graal.hotspot.amd64.test.CompressedNullCheckTest -com.oracle.graal.compiler.test.ea.UnsafeEATest -com.oracle.graal.truffle.test.SimplePartialEvaluationTest -com.oracle.graal.replacements.test.ArraysSubstitutionsTest +com.oracle.graal.hotspot.test.HotSpotCryptoSubstitutionTest +