# HG changeset patch # User Christos Kotselidis # Date 1380096494 -7200 # Node ID f517fefa7545536d9867c2b0289cd3e3f789b068 # Parent d55fb90c1f12482091edfb769bff67b1a020e9d5 Refactor write barriers diff -r d55fb90c1f12 -r f517fefa7545 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java Wed Sep 25 09:58:05 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java Wed Sep 25 10:08:14 2013 +0200 @@ -29,6 +29,12 @@ @Input private ValueNode startIndex; @Input private ValueNode length; + public ArrayRangeWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) { + super(object, null, null, true); + this.startIndex = startIndex; + this.length = length; + } + public ValueNode getStartIndex() { return startIndex; } @@ -36,10 +42,4 @@ public ValueNode getLength() { return length; } - - public ArrayRangeWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) { - super(object, null, true); - this.startIndex = startIndex; - this.length = length; - } } diff -r d55fb90c1f12 -r f517fefa7545 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Wed Sep 25 09:58:05 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Wed Sep 25 10:08:14 2013 +0200 @@ -27,14 +27,7 @@ public class G1PostWriteBarrier extends WriteBarrier { - @Input private ValueNode value; - - public ValueNode getValue() { - return value; - } - public G1PostWriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise) { - super(object, location, precise); - this.value = value; + super(object, value, location, precise); } } diff -r d55fb90c1f12 -r f517fefa7545 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java Wed Sep 25 09:58:05 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java Wed Sep 25 10:08:14 2013 +0200 @@ -28,14 +28,18 @@ public class G1PreWriteBarrier extends WriteBarrier implements DeoptimizingNode { - @Input private ValueNode expectedObject; + @Input private FrameState deoptimizationState; + private final boolean nullCheck; private final boolean doLoad; - @Input private FrameState deoptimizationState; - private final boolean nullCheck; + public G1PreWriteBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) { + super(object, expectedObject, location, true); + this.doLoad = doLoad; + this.nullCheck = nullCheck; + } public ValueNode getExpectedObject() { - return expectedObject; + return getValue(); } public boolean doLoad() { @@ -46,13 +50,6 @@ return nullCheck; } - public G1PreWriteBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) { - super(object, location, true); - this.doLoad = doLoad; - this.nullCheck = nullCheck; - this.expectedObject = expectedObject; - } - @Override public boolean canDeoptimize() { return nullCheck; diff -r d55fb90c1f12 -r f517fefa7545 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java Wed Sep 25 09:58:05 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java Wed Sep 25 10:08:14 2013 +0200 @@ -33,20 +33,18 @@ */ public class G1ReferentFieldReadBarrier extends WriteBarrier { - @Input private ValueNode expectedObject; private final boolean doLoad; + public G1ReferentFieldReadBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) { + super(object, expectedObject, location, true); + this.doLoad = doLoad; + } + public ValueNode getExpectedObject() { - return expectedObject; + return getValue(); } public boolean doLoad() { return doLoad; } - - public G1ReferentFieldReadBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) { - super(object, location, true); - this.doLoad = doLoad; - this.expectedObject = expectedObject; - } } diff -r d55fb90c1f12 -r f517fefa7545 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java Wed Sep 25 09:58:05 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java Wed Sep 25 10:08:14 2013 +0200 @@ -27,14 +27,7 @@ public class SerialWriteBarrier extends WriteBarrier { - @Input private ValueNode value; - - public ValueNode getValue() { - return value; - } - public SerialWriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise) { - super(object, location, precise); - this.value = value; + super(object, value, location, precise); } } diff -r d55fb90c1f12 -r f517fefa7545 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java Wed Sep 25 09:58:05 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java Wed Sep 25 10:08:14 2013 +0200 @@ -31,9 +31,22 @@ public abstract class WriteBarrier extends FixedWithNextNode implements Lowerable, IterableNodeType { @Input private ValueNode object; + @Input private ValueNode value; @Input private LocationNode location; private final boolean precise; + public WriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise) { + super(StampFactory.forVoid()); + this.object = object; + this.value = value; + this.location = location; + this.precise = precise; + } + + public ValueNode getValue() { + return value; + } + public ValueNode getObject() { return object; } @@ -46,13 +59,6 @@ return precise; } - public WriteBarrier(ValueNode object, LocationNode location, boolean precise) { - super(StampFactory.forVoid()); - this.object = object; - this.location = location; - this.precise = precise; - } - @Override public void lower(LoweringTool generator) { assert graph().getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA;