# HG changeset patch # User Lukas Stadler # Date 1370615773 -7200 # Node ID 3d09efebcc8e5d1263bf615639ef93413252ec5f # Parent abf8c6cc5f50293ed40463f375bb9f785629b293 do not assign FrameStates to ForeignCallNodes that have no side effect and cannot deoptimize diff -r abf8c6cc5f50 -r 3d09efebcc8e graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Fri Jun 07 16:34:44 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Fri Jun 07 16:36:13 2013 +0200 @@ -105,10 +105,15 @@ @Override public void setDeoptimizationState(FrameState f) { updateUsages(deoptState, f); - if (deoptState != null) { - throw new IllegalStateException(toString(Verbosity.Debugger)); + assert deoptState == null && canDeoptimize() : "shouldn't assign deoptState to " + this; + deoptState = f; + } + + @Override + public void setStateAfter(FrameState x) { + if (hasSideEffect() || canDeoptimize()) { + super.setStateAfter(x); } - deoptState = f; } @Override