Mercurial > hg > graal-compiler
changeset 11788:88d8b348914b
Make InfopointNode a NodeWithState, it is not a StateSplit anymore
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 25 Sep 2013 12:08:28 +0200 |
parents | 4fc75b6ca3dd |
children | bc3bb6c6ca70 |
files | graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java |
diffstat | 4 files changed, 13 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Wed Sep 25 12:08:04 2013 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Wed Sep 25 12:08:28 2013 +0200 @@ -890,6 +890,6 @@ @Override public void visitInfopointNode(InfopointNode i) { - append(new InfopointOp(stateFor(i.stateAfter(), DeoptimizationReason.None), i.reason)); + append(new InfopointOp(stateFor(i.getState(), DeoptimizationReason.None), i.reason)); } }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Wed Sep 25 12:08:04 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Wed Sep 25 12:08:28 2013 +0200 @@ -526,7 +526,7 @@ @Override public void visitInfopointNode(InfopointNode i) { - if (i.stateAfter() != null && i.stateAfter().bci == FrameState.AFTER_BCI) { + if (i.getState() != null && i.getState().bci == FrameState.AFTER_BCI) { Debug.log("Ignoring InfopointNode for AFTER_BCI"); } else { super.visitInfopointNode(i);
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Sep 25 12:08:04 2013 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Sep 25 12:08:28 2013 +0200 @@ -216,17 +216,14 @@ lastInstr = genMonitorEnter(methodSynchronizedObject); } frameState.clearNonLiveLocals(blockMap.startBlock.localsLiveIn); + ((StateSplit) lastInstr).setStateAfter(frameState.create(0)); if (graphBuilderConfig.eagerInfopointMode()) { - ((StateSplit) lastInstr).setStateAfter(frameState.create(0)); - InfopointNode ipn = currentGraph.add(new InfopointNode(InfopointReason.METHOD_START)); + InfopointNode ipn = currentGraph.add(new InfopointNode(InfopointReason.METHOD_START, frameState.create(0))); lastInstr.setNext(ipn); lastInstr = ipn; } - // finish the start block - ((StateSplit) lastInstr).setStateAfter(frameState.create(0)); - currentBlock = blockMap.startBlock; blockMap.startBlock.entryState = frameState; if (blockMap.startBlock.isLoopHeader) { @@ -1636,8 +1633,7 @@ } if (graphBuilderConfig.eagerInfopointMode()) { - InfopointNode ipn = append(new InfopointNode(InfopointReason.METHOD_END)); - ipn.setStateAfter(frameState.create(FrameState.AFTER_BCI)); + append(new InfopointNode(InfopointReason.METHOD_END, frameState.create(FrameState.AFTER_BCI))); } append(new ReturnNode(x)); @@ -1752,8 +1748,7 @@ if (graphBuilderConfig.eagerInfopointMode() && lnt != null) { currentLineNumber = lnt.getLineNumber(bci); if (currentLineNumber != previousLineNumber) { - InfopointNode ipn = append(new InfopointNode(InfopointReason.LINE_NUMBER)); - ipn.setStateAfter(frameState.create(bci)); + append(new InfopointNode(InfopointReason.LINE_NUMBER, frameState.create(bci))); previousLineNumber = currentLineNumber; } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java Wed Sep 25 12:08:04 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java Wed Sep 25 12:08:28 2013 +0200 @@ -29,13 +29,15 @@ /** * Nodes of this type are inserted into the graph to denote points of interest to debugging. */ -public class InfopointNode extends AbstractStateSplit implements LIRLowerable { +public class InfopointNode extends FixedWithNextNode implements LIRLowerable, NodeWithState { public final InfopointReason reason; + @Input private FrameState state; - public InfopointNode(InfopointReason reason) { + public InfopointNode(InfopointReason reason, FrameState state) { super(StampFactory.forVoid()); this.reason = reason; + this.state = state; } @Override @@ -43,24 +45,13 @@ generator.visitInfopointNode(this); } - @Override - public boolean hasSideEffect() { - return false; - } - - @Override - public void setStateAfter(FrameState state) { - // shield this node from frame state removal - // TODO turn InfopointNode into a FixedWithNextNode subclass with a self-maintained - // FrameState that is correctly dealt with by scheduling and partial escape analysis - if (state != null) { - super.setStateAfter(state); - } + public FrameState getState() { + return state; } @Override public boolean verify() { - return stateAfter() != null && super.verify(); + return getState() != null && super.verify(); } }