# HG changeset patch # User Josef Eisl # Date 1398174013 -7200 # Node ID c98708ec9663ca3484a35398fa2792e906cb7caf # Parent 21663230ba88b8da0bd1688f9f44a77d8fa7f0dd Move state(DeoptimizingNode) from LIRGenerator to NodeLIRBuilder (errors). diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64MemoryPeephole.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64MemoryPeephole.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64MemoryPeephole.java Tue Apr 22 15:40:13 2014 +0200 @@ -71,7 +71,7 @@ protected LIRFrameState getState(Access access) { if (access instanceof DeoptimizingNode) { - return gen.getLIRGenerator().state((DeoptimizingNode) access); + return gen.state((DeoptimizingNode) access); } return null; } diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -60,7 +60,7 @@ @Override public void emitNullCheck(ValueNode v, DeoptimizingNode deopt) { assert v.getKind() == Kind.Object : v + " - " + v.stamp() + " @ " + deopt; - append(new AMD64Move.NullCheckOp(gen.load(operand(v)), gen.state(deopt))); + append(new AMD64Move.NullCheckOp(gen.load(operand(v)), state(deopt))); } @Override @@ -103,7 +103,7 @@ @Override public void visitInfopointNode(InfopointNode i) { - append(new InfopointOp(gen.stateFor(i.getState()), i.reason)); + append(new InfopointOp(stateFor(i.getState()), i.reason)); } @Override diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.compiler.hsail/src/com/oracle/graal/compiler/hsail/HSAILNodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler.hsail/src/com/oracle/graal/compiler/hsail/HSAILNodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.compiler.hsail/src/com/oracle/graal/compiler/hsail/HSAILNodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -66,7 +66,7 @@ assert v.stamp() instanceof ObjectStamp; Variable obj = newVariable(Kind.Object); gen.emitMove(obj, operand(v)); - append(new HSAILMove.NullCheckOp(obj, gen.state(deopting))); + append(new HSAILMove.NullCheckOp(obj, state(deopting))); } @Override diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXNodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXNodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXNodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -135,7 +135,7 @@ @Override public void emitNullCheck(ValueNode v, DeoptimizingNode deopting) { assert v.getKind() == Kind.Object; - append(new PTXMove.NullCheckOp(gen.load(operand(v)), gen.state(deopting))); + append(new PTXMove.NullCheckOp(gen.load(operand(v)), state(deopting))); } @Override diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -60,7 +60,7 @@ @Override public void emitNullCheck(ValueNode v, DeoptimizingNode deopting) { assert v.getKind() == Kind.Object; - append(new NullCheckOp(gen.load(operand(v)), gen.state(deopting))); + append(new NullCheckOp(gen.load(operand(v)), state(deopting))); } @Override diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Tue Apr 22 15:40:13 2014 +0200 @@ -251,45 +251,6 @@ return false; } - private static FrameState getFrameState(DeoptimizingNode deopt) { - if (deopt instanceof DeoptimizingNode.DeoptBefore) { - assert !(deopt instanceof DeoptimizingNode.DeoptDuring || deopt instanceof DeoptimizingNode.DeoptAfter); - return ((DeoptimizingNode.DeoptBefore) deopt).stateBefore(); - } else if (deopt instanceof DeoptimizingNode.DeoptDuring) { - assert !(deopt instanceof DeoptimizingNode.DeoptAfter); - return ((DeoptimizingNode.DeoptDuring) deopt).stateDuring(); - } else { - assert deopt instanceof DeoptimizingNode.DeoptAfter; - return ((DeoptimizingNode.DeoptAfter) deopt).stateAfter(); - } - } - - public LIRFrameState state(DeoptimizingNode deopt) { - if (!deopt.canDeoptimize()) { - return null; - } - return stateFor(getFrameState(deopt)); - } - - public LIRFrameState stateWithExceptionEdge(DeoptimizingNode deopt, LabelRef exceptionEdge) { - if (!deopt.canDeoptimize()) { - return null; - } - return stateForWithExceptionEdge(getFrameState(deopt), exceptionEdge); - } - - public LIRFrameState stateFor(FrameState state) { - return stateForWithExceptionEdge(state, null); - } - - public LIRFrameState stateForWithExceptionEdge(FrameState state, LabelRef exceptionEdge) { - if (needOnlyOopMaps()) { - return new LIRFrameState(null, null, null); - } - assert state != null; - return getDebugInfoBuilder().build(state, exceptionEdge); - } - /** * Gets the ABI specific operand used to return a value of a given kind from a method. * diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -568,7 +568,7 @@ if (x instanceof InvokeWithExceptionNode) { exceptionEdge = getLIRBlock(((InvokeWithExceptionNode) x).exceptionEdge()); } - LIRFrameState callState = gen.stateWithExceptionEdge(x, exceptionEdge); + LIRFrameState callState = stateWithExceptionEdge(x, exceptionEdge); Value result = invokeCc.getReturn(); if (callTarget instanceof DirectCallTargetNode) { @@ -661,6 +661,45 @@ return debugInfoBuilder; } + private static FrameState getFrameState(DeoptimizingNode deopt) { + if (deopt instanceof DeoptimizingNode.DeoptBefore) { + assert !(deopt instanceof DeoptimizingNode.DeoptDuring || deopt instanceof DeoptimizingNode.DeoptAfter); + return ((DeoptimizingNode.DeoptBefore) deopt).stateBefore(); + } else if (deopt instanceof DeoptimizingNode.DeoptDuring) { + assert !(deopt instanceof DeoptimizingNode.DeoptAfter); + return ((DeoptimizingNode.DeoptDuring) deopt).stateDuring(); + } else { + assert deopt instanceof DeoptimizingNode.DeoptAfter; + return ((DeoptimizingNode.DeoptAfter) deopt).stateAfter(); + } + } + + public LIRFrameState state(DeoptimizingNode deopt) { + if (!deopt.canDeoptimize()) { + return null; + } + return stateFor(getFrameState(deopt)); + } + + public LIRFrameState stateWithExceptionEdge(DeoptimizingNode deopt, LabelRef exceptionEdge) { + if (!deopt.canDeoptimize()) { + return null; + } + return stateForWithExceptionEdge(getFrameState(deopt), exceptionEdge); + } + + public LIRFrameState stateFor(FrameState state) { + return stateForWithExceptionEdge(state, null); + } + + public LIRFrameState stateForWithExceptionEdge(FrameState state, LabelRef exceptionEdge) { + if (gen.needOnlyOopMaps()) { + return new LIRFrameState(null, null, null); + } + assert state != null; + return getDebugInfoBuilder().build(state, exceptionEdge); + } + public void emitOverflowCheckBranch(BeginNode overflowSuccessor, BeginNode next, double probability) { gen.emitOverflowCheckBranch(getLIRBlock(overflowSuccessor), getLIRBlock(next), probability); } diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -110,7 +110,7 @@ @Override public void visitSafepointNode(SafepointNode i) { - LIRFrameState info = gen.state(i); + LIRFrameState info = state(i); append(new AMD64HotSpotSafepointOp(info, getGen().config, this)); } diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotNodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotNodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -105,7 +105,7 @@ public void visitSafepointNode(SafepointNode i) { HotSpotVMConfig config = getGen().config; if (config.useHSAILSafepoints == true) { - LIRFrameState info = gen.state(i); + LIRFrameState info = state(i); HSAILHotSpotSafepointOp safepoint = new HSAILHotSpotSafepointOp(info, config, this); ((HSAILHotSpotLIRGenerationResult) getGen().getResult()).addDeopt(safepoint); append(safepoint); diff -r 21663230ba88 -r c98708ec9663 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java Tue Apr 22 17:15:55 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java Tue Apr 22 15:40:13 2014 +0200 @@ -63,7 +63,7 @@ @Override public void visitSafepointNode(SafepointNode i) { - LIRFrameState info = gen.state(i); + LIRFrameState info = state(i); append(new SPARCHotSpotSafepointOp(info, getGen().config, gen)); }