# HG changeset patch # User Christian Wimmer # Date 1349926193 25200 # Node ID 4dc9e468c8b077ba9351c7d5b5826fb3f7e025e7 # Parent 4667e5f25fce55ece97109da4f8a2aa25a0b5b96 The lowering currently does not support a FixedGuard as the usage of an InstanceOfNode diff -r 4667e5f25fce -r 4dc9e468c8b0 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java --- 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(); + } } diff -r 4667e5f25fce -r 4dc9e468c8b0 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 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;