# HG changeset patch # User Josef Eisl # Date 1399541708 -7200 # Node ID cf994cc23b542bff84117c865d262d6142664247 # Parent b3e84bf5718bc22d6f1c375982f328531ee65d4b Move emitNullCheck from NodeLIRBuilderTool to LIRGeneratorTool. diff -r b3e84bf5718b -r cf994cc23b54 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 Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java Thu May 08 11:35:08 2014 +0200 @@ -56,12 +56,6 @@ } @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)), state(deopt))); - } - - @Override protected boolean peephole(ValueNode valueNode) { if ((valueNode instanceof IntegerDivNode) || (valueNode instanceof IntegerRemNode)) { FixedBinaryNode divRem = (FixedBinaryNode) valueNode; diff -r b3e84bf5718b -r cf994cc23b54 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 Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.compiler.hsail/src/com/oracle/graal/compiler/hsail/HSAILNodeLIRBuilder.java Thu May 08 11:35:08 2014 +0200 @@ -25,11 +25,9 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; -import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.gen.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.gen.*; -import com.oracle.graal.lir.hsail.*; import com.oracle.graal.nodes.*; /** @@ -63,14 +61,6 @@ } @Override - public void emitNullCheck(ValueNode v, DeoptimizingNode deopting) { - assert v.stamp() instanceof ObjectStamp; - Variable obj = newVariable(Kind.Object); - gen.emitMove(obj, operand(v)); - append(new HSAILMove.NullCheckOp(obj, state(deopting))); - } - - @Override public void visitInfopointNode(InfopointNode i) { // TODO Auto-generated method stub throw GraalInternalError.unimplemented(); diff -r b3e84bf5718b -r cf994cc23b54 graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java --- a/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java Thu May 08 11:35:08 2014 +0200 @@ -894,4 +894,9 @@ throw GraalInternalError.unimplemented(); } + public void emitNullCheck(Value address, LIRFrameState state) { + assert address.getKind() == Kind.Object : address + " - " + address.getKind() + " not an object!"; + append(new PTXMove.NullCheckOp(load(address), state)); + } + } diff -r b3e84bf5718b -r cf994cc23b54 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 Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXNodeLIRBuilder.java Thu May 08 11:35:08 2014 +0200 @@ -125,12 +125,6 @@ } @Override - public void emitNullCheck(ValueNode v, DeoptimizingNode deopting) { - assert v.getKind() == Kind.Object; - append(new PTXMove.NullCheckOp(gen.load(operand(v)), state(deopting))); - } - - @Override public void visitInfopointNode(InfopointNode i) { throw GraalInternalError.unimplemented("PTXLIRGenerator.visitInfopointNode()"); } diff -r b3e84bf5718b -r cf994cc23b54 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 Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java Thu May 08 11:35:08 2014 +0200 @@ -29,7 +29,6 @@ import com.oracle.graal.compiler.gen.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.lir.sparc.*; -import com.oracle.graal.lir.sparc.SPARCMove.NullCheckOp; import com.oracle.graal.nodes.*; /** @@ -59,12 +58,6 @@ } @Override - public void emitNullCheck(ValueNode v, DeoptimizingNode deopting) { - assert v.getKind() == Kind.Object; - append(new NullCheckOp(gen.load(operand(v)), state(deopting))); - } - - @Override public void visitInfopointNode(InfopointNode i) { // TODO Auto-generated method stub throw GraalInternalError.unimplemented(); diff -r b3e84bf5718b -r cf994cc23b54 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Thu May 08 11:35:08 2014 +0200 @@ -636,4 +636,9 @@ Condition finalCondition = mirrored ? cond.mirror() : cond; append(new BranchOp(finalCondition, trueLabel, falseLabel, trueLabelProbability)); } + + public void emitNullCheck(Value address, LIRFrameState state) { + assert address.getKind() == Kind.Object : address + " - " + address.getKind() + " not an object!"; + append(new AMD64Move.NullCheckOp(load(address), state)); + } } diff -r b3e84bf5718b -r cf994cc23b54 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLIRGenerator.java Thu May 08 11:35:08 2014 +0200 @@ -285,4 +285,11 @@ throw GraalInternalError.unimplemented(); } + public void emitNullCheck(Value address, LIRFrameState state) { + assert address.getKind() == Kind.Object : address + " - " + address.getKind() + " not an object!"; + Variable obj = newVariable(Kind.Object); + emitMove(obj, address); + append(new HSAILMove.NullCheckOp(obj, state)); + } + } diff -r b3e84bf5718b -r cf994cc23b54 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Thu May 08 11:35:08 2014 +0200 @@ -40,6 +40,7 @@ import com.oracle.graal.lir.gen.*; import com.oracle.graal.lir.sparc.*; import com.oracle.graal.lir.sparc.SPARCMove.LoadOp; +import com.oracle.graal.lir.sparc.SPARCMove.NullCheckOp; import com.oracle.graal.lir.sparc.SPARCMove.StoreConstantOp; import com.oracle.graal.lir.sparc.SPARCMove.StoreOp; import com.oracle.graal.nodes.extended.*; @@ -340,4 +341,9 @@ return result; } + + public void emitNullCheck(Value address, LIRFrameState state) { + assert address.getKind() == Kind.Object : address + " - " + address.getKind() + " not an object!"; + append(new NullCheckOp(load(address), state)); + } } diff -r b3e84bf5718b -r cf994cc23b54 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java Thu May 08 11:35:08 2014 +0200 @@ -63,6 +63,8 @@ void emitStore(PlatformKind kind, Value address, Value input, LIRFrameState state); + void emitNullCheck(Value address, LIRFrameState state); + Value emitCompareAndSwap(Value address, Value expectedValue, Value newValue, Value trueValue, Value falseValue); /** diff -r b3e84bf5718b -r cf994cc23b54 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Thu May 08 11:35:08 2014 +0200 @@ -41,7 +41,7 @@ @Override public void generate(NodeLIRBuilderTool generator) { - generator.emitNullCheck(object, this); + generator.getLIRGeneratorTool().emitNullCheck(generator.operand(object), generator.state(this)); } @Override diff -r b3e84bf5718b -r cf994cc23b54 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/NodeLIRBuilderTool.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/NodeLIRBuilderTool.java Thu May 08 14:02:24 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/NodeLIRBuilderTool.java Thu May 08 11:35:08 2014 +0200 @@ -39,8 +39,6 @@ // TODO (je) remove and move into the Node LIRFrameState state(DeoptimizingNode deopt); - void emitNullCheck(ValueNode v, DeoptimizingNode deopting); - void emitIf(IfNode i); void emitConditional(ConditionalNode i);