# HG changeset patch # User Christian Wimmer # Date 1410918831 25200 # Node ID 42ee7621a3fa2c1dca6281bf4f16aa6d67fa6a23 # Parent ceb34d2d124e951ec5d2412caa3f196402e29cca Do not hardcode the stamp of deoptimization reasonAndAcation and speculation diff -r ceb34d2d124e -r 42ee7621a3fa graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java Tue Sep 16 18:53:11 2014 -0700 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java Tue Sep 16 18:53:51 2014 -0700 @@ -24,7 +24,6 @@ import java.util.*; -import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.nodes.*; @@ -57,11 +56,13 @@ if (target instanceof AbstractDeoptimizeNode) { merge = graph.add(MergeNode.create()); EndNode firstEnd = graph.add(EndNode.create()); - reasonActionPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(Kind.Int), merge)); - speculationPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(Kind.Object), merge)); + ValueNode actionAndReason = ((AbstractDeoptimizeNode) target).getActionAndReason(context.getMetaAccess()); + ValueNode speculation = ((AbstractDeoptimizeNode) target).getSpeculation(context.getMetaAccess()); + reasonActionPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(actionAndReason.getKind()), merge)); + speculationPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(speculation.getKind()), merge)); merge.addForwardEnd(firstEnd); - reasonActionPhi.addInput(((AbstractDeoptimizeNode) target).getActionAndReason(context.getMetaAccess())); - speculationPhi.addInput(((AbstractDeoptimizeNode) target).getSpeculation(context.getMetaAccess())); + reasonActionPhi.addInput(actionAndReason); + speculationPhi.addInput(speculation); target.replaceAtPredecessor(firstEnd); exitLoops((AbstractDeoptimizeNode) target, firstEnd, cfg);