# HG changeset patch # User Gilles Duboscq # Date 1430409842 -7200 # Node ID 5d4f7c514447a87b562a6c887e6953a0fdbee3c1 # Parent 5bf34f45066026df92dfddc85e63d03d9ba7403f Skip deoptimizations that do not invalidate the compiled code in ConvertDeoptimizationToGuards diff -r 5bf34f450660 -r 5d4f7c514447 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GuardEliminationCornerCasesTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GuardEliminationCornerCasesTest.java Thu Apr 30 13:49:24 2015 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GuardEliminationCornerCasesTest.java Thu Apr 30 18:04:02 2015 +0200 @@ -62,11 +62,11 @@ if (b instanceof C) { return 1; } else { - GraalDirectives.deoptimize(); + GraalDirectives.deoptimizeAndInvalidate(); } } } else { - GraalDirectives.deoptimize(); + GraalDirectives.deoptimizeAndInvalidate(); } } return 0; diff -r 5bf34f450660 -r 5d4f7c514447 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Thu Apr 30 13:49:24 2015 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Thu Apr 30 18:04:02 2015 +0200 @@ -134,6 +134,9 @@ } private void visitDeoptBegin(AbstractBeginNode deoptBegin, DeoptimizationAction deoptAction, DeoptimizationReason deoptReason, StructuredGraph graph) { + if (!deoptAction.doesInvalidateCompilation()) { + return; + } if (deoptBegin instanceof AbstractMergeNode) { AbstractMergeNode mergeNode = (AbstractMergeNode) deoptBegin; Debug.log("Visiting %s", mergeNode);