Mercurial > hg > truffle
changeset 6548:4dc9e468c8b0
The lowering currently does not support a FixedGuard as the usage of an InstanceOfNode
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Wed, 10 Oct 2012 20:29:53 -0700 |
parents | 4667e5f25fce |
children | 15e04f248d6b |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java |
diffstat | 2 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Wed Oct 10 20:29:24 2012 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Wed Oct 10 20:29:53 2012 -0700 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.java; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; @@ -132,4 +133,12 @@ public JavaTypeProfile profile() { return profile; } + + @Override + public boolean verify() { + for (Node usage : usages()) { + assertTrue(usage instanceof IfNode || usage instanceof ConditionalNode, "unsupported usage: ", usage); + } + return super.verify(); + } }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Wed Oct 10 20:29:24 2012 -0700 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Wed Oct 10 20:29:53 2012 -0700 @@ -27,6 +27,7 @@ import com.oracle.graal.debug.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; +import com.oracle.graal.nodes.java.*; import com.oracle.graal.nodes.util.*; import com.oracle.graal.phases.*; @@ -79,6 +80,10 @@ IfNode ifNode = (IfNode) deoptBegin.predecessor(); BeginNode otherBegin = ifNode.trueSuccessor(); BooleanNode conditionNode = ifNode.compare(); + if (conditionNode instanceof InstanceOfNode) { + // TODO The lowering currently does not support a FixedGuard as the usage of an InstanceOfNode. Relax this restriction. + return; + } boolean negated = false; if (deoptBegin == ifNode.trueSuccessor()) { negated = true;