Mercurial > hg > graal-compiler
changeset 7927:3362be58312a
Move implicit null check emission to AMD64 specific code.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 05 Mar 2013 11:02:01 +0100 |
parents | fb4d914f6bef |
children | 47a7e8d80536 |
files | graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java |
diffstat | 4 files changed, 10 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- 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));
--- 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"); }
--- 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;
--- 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);