# HG changeset patch # User Lukas Stadler # Date 1403708100 -7200 # Node ID c3260b05fd267d20c44c954240eaf5787dd8149c # Parent 561070049e730367e8e17a4ffcc3b6778bf66daf rename x() to getX() and y() to getY() in FixedBinaryNode diff -r 561070049e73 -r c3260b05fd26 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 Wed Jun 25 16:54:56 2014 +0200 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64NodeLIRBuilder.java Wed Jun 25 16:55:00 2014 +0200 @@ -64,8 +64,8 @@ FixedWithNextNode fixedWithNextNode = (FixedWithNextNode) node; if (((fixedWithNextNode instanceof IntegerDivNode) || (fixedWithNextNode instanceof IntegerRemNode)) && fixedWithNextNode.getClass() != divRem.getClass()) { FixedBinaryNode otherDivRem = (FixedBinaryNode) fixedWithNextNode; - if (otherDivRem.x() == divRem.x() && otherDivRem.y() == divRem.y() && !hasOperand(otherDivRem)) { - Value[] results = ((AMD64LIRGenerator) gen).emitIntegerDivRem(operand(divRem.x()), operand(divRem.y()), state((DeoptimizingNode) valueNode)); + if (otherDivRem.getX() == divRem.getX() && otherDivRem.getY() == divRem.getY() && !hasOperand(otherDivRem)) { + Value[] results = ((AMD64LIRGenerator) gen).emitIntegerDivRem(operand(divRem.getX()), operand(divRem.getY()), state((DeoptimizingNode) valueNode)); if (divRem instanceof IntegerDivNode) { setResult(divRem, results[0]); setResult(otherDivRem, results[1]); diff -r 561070049e73 -r c3260b05fd26 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java Wed Jun 25 16:54:56 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java Wed Jun 25 16:55:00 2014 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,17 +30,17 @@ @Input private ValueNode x; @Input private ValueNode y; - public ValueNode x() { - return x; - } - - public ValueNode y() { - return y; - } - public FixedBinaryNode(Stamp stamp, ValueNode x, ValueNode y) { super(stamp); this.x = x; this.y = y; } + + public ValueNode getX() { + return x; + } + + public ValueNode getY() { + return y; + } } diff -r 561070049e73 -r c3260b05fd26 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Wed Jun 25 16:54:56 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Wed Jun 25 16:55:00 2014 +0200 @@ -39,34 +39,34 @@ @Override public boolean inferStamp() { - return updateStamp(StampTool.div(x().stamp(), y().stamp())); + return updateStamp(StampTool.div(getX().stamp(), getY().stamp())); } @Override public Node canonical(CanonicalizerTool tool) { - if (x().isConstant() && y().isConstant()) { - long y = y().asConstant().asLong(); + if (getX().isConstant() && getY().isConstant()) { + long y = getY().asConstant().asLong(); if (y == 0) { return this; // this will trap, can not canonicalize } - return ConstantNode.forIntegerStamp(stamp(), x().asConstant().asLong() / y, graph()); - } else if (y().isConstant()) { - long c = y().asConstant().asLong(); + return ConstantNode.forIntegerStamp(stamp(), getX().asConstant().asLong() / y, graph()); + } else if (getY().isConstant()) { + long c = getY().asConstant().asLong(); if (c == 1) { - return x(); + return getX(); } if (c == -1) { - return graph().unique(new NegateNode(x())); + return graph().unique(new NegateNode(getX())); } long abs = Math.abs(c); - if (CodeUtil.isPowerOf2(abs) && x().stamp() instanceof IntegerStamp) { - ValueNode dividend = x(); - IntegerStamp stampX = (IntegerStamp) x().stamp(); + if (CodeUtil.isPowerOf2(abs) && getX().stamp() instanceof IntegerStamp) { + ValueNode dividend = getX(); + IntegerStamp stampX = (IntegerStamp) getX().stamp(); int log2 = CodeUtil.log2(abs); // no rounding if dividend is positive or if its low bits are always 0 if (stampX.canBeNegative() || (stampX.upMask() & (abs - 1)) != 0) { int bits = PrimitiveStamp.getBits(stamp()); - RightShiftNode sign = new RightShiftNode(x(), ConstantNode.forInt(bits - 1)); + RightShiftNode sign = new RightShiftNode(getX(), ConstantNode.forInt(bits - 1)); UnsignedRightShiftNode round = new UnsignedRightShiftNode(sign, ConstantNode.forInt(bits - log2)); dividend = IntegerArithmeticNode.add(dividend, round); } @@ -79,13 +79,13 @@ } // Convert the expression ((a - a % b) / b) into (a / b). - if (x() instanceof IntegerSubNode) { - IntegerSubNode integerSubNode = (IntegerSubNode) x(); + if (getX() instanceof IntegerSubNode) { + IntegerSubNode integerSubNode = (IntegerSubNode) getX(); if (integerSubNode.getY() instanceof IntegerRemNode) { IntegerRemNode integerRemNode = (IntegerRemNode) integerSubNode.getY(); - if (integerSubNode.stamp().isCompatible(this.stamp()) && integerRemNode.stamp().isCompatible(this.stamp()) && integerSubNode.getX() == integerRemNode.x() && - this.y() == integerRemNode.y()) { - return graph().add(new IntegerDivNode(integerSubNode.getX(), this.y())); + if (integerSubNode.stamp().isCompatible(this.stamp()) && integerRemNode.stamp().isCompatible(this.stamp()) && integerSubNode.getX() == integerRemNode.getX() && + this.getY() == integerRemNode.getY()) { + return graph().add(new IntegerDivNode(integerSubNode.getX(), this.getY())); } } } @@ -107,11 +107,11 @@ @Override public void generate(NodeLIRBuilderTool gen) { - gen.setResult(this, gen.getLIRGeneratorTool().emitDiv(gen.operand(x()), gen.operand(y()), gen.state(this))); + gen.setResult(this, gen.getLIRGeneratorTool().emitDiv(gen.operand(getX()), gen.operand(getY()), gen.state(this))); } @Override public boolean canDeoptimize() { - return !(y().stamp() instanceof IntegerStamp) || ((IntegerStamp) y().stamp()).contains(0); + return !(getY().stamp() instanceof IntegerStamp) || ((IntegerStamp) getY().stamp()).contains(0); } } diff -r 561070049e73 -r c3260b05fd26 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java Wed Jun 25 16:54:56 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java Wed Jun 25 16:55:00 2014 +0200 @@ -39,23 +39,23 @@ @Override public boolean inferStamp() { - return updateStamp(StampTool.rem(x().stamp(), y().stamp())); + return updateStamp(StampTool.rem(getX().stamp(), getY().stamp())); } @Override public Node canonical(CanonicalizerTool tool) { - if (x().isConstant() && y().isConstant()) { - long y = y().asConstant().asLong(); + if (getX().isConstant() && getY().isConstant()) { + long y = getY().asConstant().asLong(); if (y == 0) { return this; // this will trap, can not canonicalize } - return ConstantNode.forIntegerStamp(stamp(), x().asConstant().asLong() % y); - } else if (y().isConstant()) { - long c = y().asConstant().asLong(); + return ConstantNode.forIntegerStamp(stamp(), getX().asConstant().asLong() % y); + } else if (getY().isConstant()) { + long c = getY().asConstant().asLong(); if (c == 1 || c == -1) { return ConstantNode.forIntegerStamp(stamp(), 0); - } else if (c > 0 && CodeUtil.isPowerOf2(c) && x().stamp() instanceof IntegerStamp && ((IntegerStamp) x().stamp()).isPositive()) { - return new AndNode(x(), ConstantNode.forIntegerStamp(stamp(), c - 1)); + } else if (c > 0 && CodeUtil.isPowerOf2(c) && getX().stamp() instanceof IntegerStamp && ((IntegerStamp) getX().stamp()).isPositive()) { + return new AndNode(getX(), ConstantNode.forIntegerStamp(stamp(), c - 1)); } } return this; @@ -68,11 +68,11 @@ @Override public void generate(NodeLIRBuilderTool gen) { - gen.setResult(this, gen.getLIRGeneratorTool().emitRem(gen.operand(x()), gen.operand(y()), gen.state(this))); + gen.setResult(this, gen.getLIRGeneratorTool().emitRem(gen.operand(getX()), gen.operand(getY()), gen.state(this))); } @Override public boolean canDeoptimize() { - return !(y().stamp() instanceof IntegerStamp) || ((IntegerStamp) y().stamp()).contains(0); + return !(getY().stamp() instanceof IntegerStamp) || ((IntegerStamp) getY().stamp()).contains(0); } } diff -r 561070049e73 -r c3260b05fd26 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java Wed Jun 25 16:54:56 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java Wed Jun 25 16:55:00 2014 +0200 @@ -38,19 +38,19 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (x().isConstant() && y().isConstant()) { - long yConst = y().asConstant().asLong(); + if (getX().isConstant() && getY().isConstant()) { + long yConst = getY().asConstant().asLong(); if (yConst == 0) { return this; // this will trap, cannot canonicalize } - return ConstantNode.forIntegerStamp(stamp(), UnsignedMath.divide(x().asConstant().asLong(), yConst), graph()); - } else if (y().isConstant()) { - long c = y().asConstant().asLong(); + return ConstantNode.forIntegerStamp(stamp(), UnsignedMath.divide(getX().asConstant().asLong(), yConst), graph()); + } else if (getY().isConstant()) { + long c = getY().asConstant().asLong(); if (c == 1) { - return x(); + return getX(); } if (CodeUtil.isPowerOf2(c)) { - return graph().unique(new UnsignedRightShiftNode(x(), ConstantNode.forInt(CodeUtil.log2(c), graph()))); + return graph().unique(new UnsignedRightShiftNode(getX(), ConstantNode.forInt(CodeUtil.log2(c), graph()))); } } return this; @@ -63,12 +63,12 @@ @Override public void generate(NodeLIRBuilderTool gen) { - gen.setResult(this, gen.getLIRGeneratorTool().emitUDiv(gen.operand(x()), gen.operand(y()), gen.state(this))); + gen.setResult(this, gen.getLIRGeneratorTool().emitUDiv(gen.operand(getX()), gen.operand(getY()), gen.state(this))); } @Override public boolean canDeoptimize() { - return !(y().stamp() instanceof IntegerStamp) || ((IntegerStamp) y().stamp()).contains(0); + return !(getY().stamp() instanceof IntegerStamp) || ((IntegerStamp) getY().stamp()).contains(0); } @NodeIntrinsic diff -r 561070049e73 -r c3260b05fd26 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java Wed Jun 25 16:54:56 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java Wed Jun 25 16:55:00 2014 +0200 @@ -38,18 +38,18 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (x().isConstant() && y().isConstant()) { - long yConst = y().asConstant().asLong(); + if (getX().isConstant() && getY().isConstant()) { + long yConst = getY().asConstant().asLong(); if (yConst == 0) { return this; // this will trap, cannot canonicalize } - return ConstantNode.forIntegerStamp(stamp(), UnsignedMath.remainder(x().asConstant().asLong(), yConst), graph()); - } else if (y().isConstant()) { - long c = y().asConstant().asLong(); + return ConstantNode.forIntegerStamp(stamp(), UnsignedMath.remainder(getX().asConstant().asLong(), yConst), graph()); + } else if (getY().isConstant()) { + long c = getY().asConstant().asLong(); if (c == 1) { return ConstantNode.forIntegerStamp(stamp(), 0); } else if (CodeUtil.isPowerOf2(c)) { - return new AndNode(x(), ConstantNode.forIntegerStamp(stamp(), c - 1)); + return new AndNode(getX(), ConstantNode.forIntegerStamp(stamp(), c - 1)); } } return this; @@ -62,12 +62,12 @@ @Override public void generate(NodeLIRBuilderTool gen) { - gen.setResult(this, gen.getLIRGeneratorTool().emitURem(gen.operand(x()), gen.operand(y()), gen.state(this))); + gen.setResult(this, gen.getLIRGeneratorTool().emitURem(gen.operand(getX()), gen.operand(getY()), gen.state(this))); } @Override public boolean canDeoptimize() { - return !(y().stamp() instanceof IntegerStamp) || ((IntegerStamp) y().stamp()).contains(0); + return !(getY().stamp() instanceof IntegerStamp) || ((IntegerStamp) getY().stamp()).contains(0); } @NodeIntrinsic