# HG changeset patch # User Christos Kotselidis # Date 1364319079 -3600 # Node ID 6aa080855d7ca6e9f5ed6d7dd66347fff9f8cc96 # Parent 450abf358987e4b543f737bc85af938f0d100983 -Bug fixes diff -r 450abf358987 -r 6aa080855d7c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Mar 26 12:08:51 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Mar 26 18:31:19 2013 +0100 @@ -634,7 +634,7 @@ // Separate out GC barrier semantics CompareAndSwapNode cas = (CompareAndSwapNode) n; ValueNode expected = cas.expected(); - IndexedLocationNode location = IndexedLocationNode.create(LocationNode.ANY_LOCATION, cas.expected().kind(), cas.displacement(), cas.offset(), graph, 1); + LocationNode location = IndexedLocationNode.create(LocationNode.ANY_LOCATION, cas.expected().kind(), cas.displacement(), cas.offset(), graph, 1); if (expected.kind() == Kind.Object && !cas.newValue().objectStamp().alwaysNull()) { ResolvedJavaType type = cas.object().objectStamp().type(); if (type != null && !type.isArray() && !MetaUtil.isJavaLangObject(type)) { @@ -645,8 +645,7 @@ graph.addBeforeFixed(cas, writeBarrierPre); graph.addAfterFixed(cas, writeBarrierPost); } else { - FieldWriteBarrier writeBarrier = graph.add(new FieldWriteBarrier(cas.object())); - graph.addAfterFixed(cas, writeBarrier); + graph.addAfterFixed(cas, graph.add(new FieldWriteBarrier(cas.object()))); } } else { // This may be an array store so use an array write barrier @@ -671,7 +670,7 @@ StoreIndexedNode storeIndexed = (StoreIndexedNode) n; ValueNode boundsCheck = createBoundsCheck(storeIndexed, tool); Kind elementKind = storeIndexed.elementKind(); - IndexedLocationNode arrayLocation = createArrayLocation(graph, elementKind, storeIndexed.index()); + LocationNode arrayLocation = createArrayLocation(graph, elementKind, storeIndexed.index()); ValueNode value = storeIndexed.value(); ValueNode array = storeIndexed.array(); if (elementKind == Kind.Object && !value.objectStamp().alwaysNull()) { @@ -735,8 +734,7 @@ graph.addBeforeFixed(write, graph.add(writeBarrierPre)); graph.addAfterFixed(write, graph.add(new WriteBarrierPost(object, write.value(), location, false))); } else { - FieldWriteBarrier writeBarrier = graph.add(new FieldWriteBarrier(object)); - graph.addAfterFixed(write, writeBarrier); + graph.addAfterFixed(write, graph.add(new FieldWriteBarrier(object))); } } else { // This may be an array store so use an array write barrier @@ -745,8 +743,7 @@ graph.addBeforeFixed(write, writeBarrierPre); graph.addAfterFixed(write, graph.add(new WriteBarrierPost(object, write.value(), location, true))); } else { - ArrayWriteBarrier writeBarrier = graph.add(new ArrayWriteBarrier(object, location)); - graph.addAfterFixed(write, writeBarrier); + graph.addAfterFixed(write, graph.add(new ArrayWriteBarrier(object, location))); } } } diff -r 450abf358987 -r 6aa080855d7c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayWriteBarrier.java Tue Mar 26 12:08:51 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayWriteBarrier.java Tue Mar 26 18:31:19 2013 +0100 @@ -25,21 +25,23 @@ import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.spi.*; +import com.oracle.graal.nodes.type.*; -public final class ArrayWriteBarrier extends WriteBarrier implements Lowerable { +public final class ArrayWriteBarrier extends FixedWithNextNode implements Lowerable { @Input private ValueNode object; @Input private LocationNode location; - public ValueNode object() { + public ValueNode getObject() { return object; } - public LocationNode location() { + public LocationNode getLocation() { return location; } public ArrayWriteBarrier(ValueNode object, LocationNode location) { + super(StampFactory.forVoid()); this.object = object; this.location = location; } diff -r 450abf358987 -r 6aa080855d7c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/FieldWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/FieldWriteBarrier.java Tue Mar 26 12:08:51 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/FieldWriteBarrier.java Tue Mar 26 18:31:19 2013 +0100 @@ -24,16 +24,18 @@ import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; +import com.oracle.graal.nodes.type.*; -public final class FieldWriteBarrier extends WriteBarrier implements Lowerable { +public final class FieldWriteBarrier extends FixedWithNextNode implements Lowerable { @Input private ValueNode object; - public ValueNode object() { + public ValueNode getObject() { return object; } public FieldWriteBarrier(ValueNode object) { + super(StampFactory.forVoid()); this.object = object; } diff -r 450abf358987 -r 6aa080855d7c 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 Tue Mar 26 12:08:51 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Tue Mar 26 18:31:19 2013 +0100 @@ -167,8 +167,8 @@ ResolvedJavaMethod method = serialArrayWriteBarrier; Key key = new Key(method); Arguments arguments = new Arguments(); - arguments.add("object", arrayWriteBarrier.object()); - arguments.add("location", arrayWriteBarrier.location()); + arguments.add("object", arrayWriteBarrier.getObject()); + arguments.add("location", arrayWriteBarrier.getLocation()); SnippetTemplate template = cache.get(key, assumptions); template.instantiate(runtime, arrayWriteBarrier, DEFAULT_REPLACER, arguments); } @@ -177,7 +177,7 @@ ResolvedJavaMethod method = serialFieldWriteBarrier; Key key = new Key(method); Arguments arguments = new Arguments(); - arguments.add("object", fieldWriteBarrier.object()); + arguments.add("object", fieldWriteBarrier.getObject()); SnippetTemplate template = cache.get(key, assumptions); template.instantiate(runtime, fieldWriteBarrier, DEFAULT_REPLACER, arguments); }