Mercurial > hg > truffle
changeset 21163:5d4f7c514447
Skip deoptimizations that do not invalidate the compiled code in ConvertDeoptimizationToGuards
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Thu, 30 Apr 2015 18:04:02 +0200 |
parents | 5bf34f450660 |
children | a394890fd474 |
files | graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GuardEliminationCornerCasesTest.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java |
diffstat | 2 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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);