Mercurial > hg > truffle
diff graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRGenerator.java @ 2862:45422967cbcf
Rename Materialize => NormalizeCompare
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Tue, 07 Jun 2011 16:32:35 +0200 |
parents | a97605b0489b |
children | fc75fd3fa5e4 |
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRGenerator.java Tue Jun 07 16:16:56 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/target/amd64/AMD64LIRGenerator.java Tue Jun 07 16:32:35 2011 +0200 @@ -417,7 +417,7 @@ } @Override - public void visitMaterialize(Materialize x) { + public void visitMaterialize(NormalizeCompare x) { LIRItem left = new LIRItem(x.x(), this); LIRItem right = new LIRItem(x.y(), this); if (!x.kind.isVoid() && x.x().kind.isLong()) { @@ -472,12 +472,12 @@ @Override public void visitIf(If x) { - CiKind kind = x.x().kind; + CiKind kind = x.compare().x().kind; - Condition cond = x.condition(); + Condition cond = x.compare().condition(); - LIRItem xitem = new LIRItem(x.x(), this); - LIRItem yitem = new LIRItem(x.y(), this); + LIRItem xitem = new LIRItem(x.compare().x(), this); + LIRItem yitem = new LIRItem(x.compare().y(), this); LIRItem xin = xitem; LIRItem yin = yitem; @@ -504,8 +504,12 @@ CiValue left = xin.result(); CiValue right = yin.result(); lir.cmp(cond, left, right); - if (x.x().kind.isFloat() || x.x().kind.isDouble()) { - lir.branch(cond, right.kind, getLIRBlock(x.trueSuccessor()), getLIRBlock(x.unorderedSuccessor())); + if (x.compare().x().kind.isFloat() || x.compare().x().kind.isDouble()) { + Instruction unorderedSucc = x.falseSuccessor(); + if (x.compare().unorderedIsTrue()) { + unorderedSucc = x.trueSuccessor(); + } + lir.branch(cond, right.kind, getLIRBlock(x.trueSuccessor()), getLIRBlock(unorderedSucc)); } else { lir.branch(cond, right.kind, getLIRBlock(x.trueSuccessor())); }