# HG changeset patch # User Christos Kotselidis # Date 1375443601 -7200 # Node ID b9718191858c3711613376e271d9699c6482a43a # Parent d85bdcb38fa2c34792480b36fd12eec31961a387 G1ReferentFieldReadBarrier is not a deoptimizing node diff -r d85bdcb38fa2 -r b9718191858c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java --- 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."; diff -r d85bdcb38fa2 -r b9718191858c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java --- 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); } diff -r d85bdcb38fa2 -r b9718191858c graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/G1ReferentFieldReadBarrier.java --- 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; - } }