changeset 10941:b9718191858c

G1ReferentFieldReadBarrier is not a deoptimizing node
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Fri, 02 Aug 2013 13:40:01 +0200
parents d85bdcb38fa2
children 56a86b60c9d3
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/G1ReferentFieldReadBarrier.java
diffstat 3 files changed, 4 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java	Fri Aug 02 13:35:13 2013 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java	Fri Aug 02 13:40:01 2013 +0200
@@ -56,7 +56,7 @@
     private static void addReadNodeBarriers(ReadNode node, StructuredGraph graph) {
         if (node.getBarrierType() == BarrierType.PRECISE) {
             assert useG1GC();
-            G1ReferentFieldReadBarrier barrier = graph.add(new G1ReferentFieldReadBarrier(node.object(), node, node.location(), false, false));
+            G1ReferentFieldReadBarrier barrier = graph.add(new G1ReferentFieldReadBarrier(node.object(), node, node.location(), false));
             graph.addAfterFixed(node, barrier);
         } else {
             assert node.getBarrierType() == BarrierType.NONE : "Non precise read barrier has been attached to read node.";
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java	Fri Aug 02 13:35:13 2013 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java	Fri Aug 02 13:40:01 2013 +0200
@@ -338,7 +338,7 @@
             args.add("expectedObject", readBarrier.getExpectedObject());
             args.add("location", readBarrier.getLocation());
             args.addConst("doLoad", readBarrier.doLoad());
-            args.addConst("nullCheck", readBarrier.getNullCheck());
+            args.addConst("nullCheck", false);
             args.addConst("trace", traceBarrier());
             template(args).instantiate(runtime, readBarrier, DEFAULT_REPLACER, args);
         }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/G1ReferentFieldReadBarrier.java	Fri Aug 02 13:35:13 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/G1ReferentFieldReadBarrier.java	Fri Aug 02 13:40:01 2013 +0200
@@ -22,7 +22,6 @@
  */
 package com.oracle.graal.nodes;
 
-import com.oracle.graal.api.meta.*;
 import com.oracle.graal.nodes.extended.*;
 
 /**
@@ -31,14 +30,11 @@
  * {@code UnsafeLoadNode}). The return value of the read is passed to the snippet implementing the
  * read barrier and consequently is added to the SATB queue if the concurrent marker is enabled.
  */
-public class G1ReferentFieldReadBarrier extends WriteBarrier implements DeoptimizingNode {
+public class G1ReferentFieldReadBarrier extends WriteBarrier {
 
     @Input private ValueNode expectedObject;
     private final boolean doLoad;
 
-    @Input private FrameState deoptimizationState;
-    private final boolean nullCheck;
-
     public ValueNode getExpectedObject() {
         return expectedObject;
     }
@@ -47,35 +43,9 @@
         return doLoad;
     }
 
-    public boolean getNullCheck() {
-        return nullCheck;
-    }
-
-    public G1ReferentFieldReadBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) {
+    public G1ReferentFieldReadBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) {
         super(object, location, true);
         this.doLoad = doLoad;
-        this.nullCheck = nullCheck;
         this.expectedObject = expectedObject;
     }
-
-    @Override
-    public boolean canDeoptimize() {
-        return nullCheck;
-    }
-
-    @Override
-    public FrameState getDeoptimizationState() {
-        return deoptimizationState;
-    }
-
-    @Override
-    public void setDeoptimizationState(FrameState state) {
-        updateUsages(deoptimizationState, state);
-        deoptimizationState = state;
-    }
-
-    @Override
-    public DeoptimizationReason getDeoptimizationReason() {
-        return DeoptimizationReason.NullCheckException;
-    }
 }