# HG changeset patch # User Lukas Stadler # Date 1370425807 -7200 # Node ID d0a007fb65afafca0d6a250dd4ea590797c09216 # Parent fe02e8159afaca757b357107f51330238ad3c8da simplify FrameStateAssignmentPhase, add guarantee that every DeoptimizingNode has a FrameState diff -r fe02e8159afa -r d0a007fb65af graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java Wed Jun 05 11:47:46 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java Wed Jun 05 11:50:07 2013 +0200 @@ -41,6 +41,7 @@ if (node instanceof DeoptimizingNode) { DeoptimizingNode deopt = (DeoptimizingNode) node; if (deopt.canDeoptimize() && deopt.getDeoptimizationState() == null) { + GraalInternalError.guarantee(currentState != null, "no FrameState at DeoptimizingNode %s", deopt); deopt.setDeoptimizationState(currentState); } } @@ -58,10 +59,7 @@ @Override protected FrameState merge(MergeNode merge, List states) { - if (merge.stateAfter() != null) { - return merge.stateAfter(); - } - return singleFrameState(merge, states); + return merge.stateAfter() != null ? merge.stateAfter() : singleFrameState(merge, states); } @Override @@ -73,7 +71,6 @@ protected Map processLoop(LoopBeginNode loop, FrameState initialState) { return ReentrantNodeIterator.processLoop(this, loop, initialState).exitStates; } - } @Override @@ -93,33 +90,12 @@ } private static FrameState singleFrameState(@SuppressWarnings("unused") MergeNode merge, List states) { - if (states.size() == 0) { - return null; - } - FrameState firstState = states.get(0); - FrameState singleState = firstState; - if (singleState == null) { - return null; - } - int singleBci = singleState.bci; + FrameState singleState = states.get(0); for (int i = 1; i < states.size(); ++i) { - FrameState cur = states.get(i); - if (cur == null) { + if (states.get(i) != singleState) { return null; } - - if (cur != singleState) { - singleState = null; - } - - if (cur.bci != singleBci) { - singleBci = FrameState.INVALID_FRAMESTATE_BCI; - } - } - if (singleState != null) { - return singleState; - } - return null; + return singleState; } }