changeset 11780:f517fefa7545

Refactor write barriers
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Wed, 25 Sep 2013 10:08:14 +0200
parents d55fb90c1f12
children 492766ec345a
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java
diffstat 6 files changed, 35 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- 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;
-    }
 }
--- 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);
     }
 }
--- 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;
--- 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;
-    }
 }
--- 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);
     }
 }
--- 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;