Mercurial > hg > truffle
comparison graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java @ 8956:74725f2f6122
Add a deoptState for invokes so that they can loose their stateAfter
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 09 Apr 2013 16:27:59 +0200 |
parents | 2c0c708a0ad6 |
children | 055d555d5378 |
comparison
equal
deleted
inserted
replaced
8955:f84f5112869e | 8956:74725f2f6122 |
---|---|
36 */ | 36 */ |
37 @NodeInfo(nameTemplate = "Invoke#{p#targetMethod/s}") | 37 @NodeInfo(nameTemplate = "Invoke#{p#targetMethod/s}") |
38 public final class InvokeNode extends AbstractStateSplit implements StateSplit, Node.IterableNodeType, Invoke, LIRLowerable, MemoryCheckpoint { | 38 public final class InvokeNode extends AbstractStateSplit implements StateSplit, Node.IterableNodeType, Invoke, LIRLowerable, MemoryCheckpoint { |
39 | 39 |
40 @Input private final CallTargetNode callTarget; | 40 @Input private final CallTargetNode callTarget; |
41 @Input private FrameState deoptState; | |
41 private final int bci; | 42 private final int bci; |
42 private boolean polymorphic; | 43 private boolean polymorphic; |
43 private boolean useForInlining; | 44 private boolean useForInlining; |
44 private double inliningRelevance; | 45 private double inliningRelevance; |
45 | 46 |
186 return null; | 187 return null; |
187 } | 188 } |
188 | 189 |
189 @Override | 190 @Override |
190 public FrameState getDeoptimizationState() { | 191 public FrameState getDeoptimizationState() { |
191 return stateDuring(); | 192 if (deoptState == null) { |
193 FrameState stateDuring = stateDuring(); | |
194 updateUsages(deoptState, stateDuring); | |
195 deoptState = stateDuring; | |
196 } | |
197 return deoptState; | |
192 } | 198 } |
193 | 199 |
194 @Override | 200 @Override |
195 public void setDeoptimizationState(FrameState f) { | 201 public void setDeoptimizationState(FrameState f) { |
196 throw new IllegalStateException(); | 202 throw new IllegalStateException(); |