# HG changeset patch # User Thomas Wuerthinger # Date 1362477721 -3600 # Node ID 3362be58312a2bab3878e8582d4030aad858fd17 # Parent fb4d914f6bef25370ac9630df606a4cae68c1c9c Move implicit null check emission to AMD64 specific code. diff -r fb4d914f6bef -r 3362be58312a graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Mon Mar 04 17:20:55 2013 +0100 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Tue Mar 05 11:02:01 2013 +0100 @@ -897,7 +897,15 @@ } @Override - protected void emitNullCheckGuard(ValueNode object) { + public void emitGuardCheck(LogicNode comp, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) { + if (comp instanceof IsNullNode && negated) { + emitNullCheckGuard(((IsNullNode) comp).object()); + } else { + super.emitGuardCheck(comp, deoptReason, action, negated); + } + } + + private void emitNullCheckGuard(ValueNode object) { Variable value = load(operand(object)); LIRFrameState info = state(); append(new NullCheckOp(value, info)); diff -r fb4d914f6bef -r 3362be58312a 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 Mon Mar 04 17:20:55 2013 +0100 +++ b/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java Tue Mar 05 11:02:01 2013 +0100 @@ -448,11 +448,6 @@ } @Override - protected void emitNullCheckGuard(ValueNode object) { - throw new InternalError("NYI"); - } - - @Override public void visitCompareAndSwap(CompareAndSwapNode node) { throw new InternalError("NYI"); } diff -r fb4d914f6bef -r 3362be58312a graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java --- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Mon Mar 04 17:20:55 2013 +0100 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Tue Mar 05 11:02:01 2013 +0100 @@ -62,12 +62,6 @@ } @Override - protected void emitNullCheckGuard(ValueNode object) { - // SPARC: Auto-generated method stub - - } - - @Override public void emitJump(LabelRef label, LIRFrameState info) { @SuppressWarnings("unused") SPARCLIRInstruction instruction = null; diff -r fb4d914f6bef -r 3362be58312a 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 Mon Mar 04 17:20:55 2013 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Tue Mar 05 11:02:01 2013 +0100 @@ -590,9 +590,7 @@ @Override public void emitGuardCheck(LogicNode comp, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) { - if (comp instanceof IsNullNode && negated) { - emitNullCheckGuard(((IsNullNode) comp).object()); - } else if (comp instanceof LogicConstantNode && ((LogicConstantNode) comp).getValue() != negated) { + if (comp instanceof LogicConstantNode && ((LogicConstantNode) comp).getValue() != negated) { // True constant, nothing to emit. // False constants are handled within emitBranch. } else { @@ -607,8 +605,6 @@ } } - protected abstract void emitNullCheckGuard(ValueNode object); - public void emitBranch(LogicNode node, LabelRef trueSuccessor, LabelRef falseSuccessor, LIRFrameState info) { if (node instanceof IsNullNode) { emitNullCheckBranch((IsNullNode) node, trueSuccessor, falseSuccessor, info);