Mercurial > hg > graal-compiler
changeset 9946:3d09efebcc8e
do not assign FrameStates to ForeignCallNodes that have no side effect and cannot deoptimize
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Fri, 07 Jun 2013 16:36:13 +0200 |
parents | abf8c6cc5f50 |
children | f8a4c5011a10 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java |
diffstat | 1 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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