# HG changeset patch # User Doug Simon # Date 1333487307 -7200 # Node ID cb3245503a5e0a94915770727e3d1521ff24945d # Parent 6fbf12b8e5723364e68ae89fb96847fe051a0ae9 emit GC write barrier for UnsafeStoreNode only if store kind is Object diff -r 6fbf12b8e572 -r cb3245503a5e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java Tue Apr 03 21:31:32 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/ri/HotSpotRuntime.java Tue Apr 03 23:08:27 2012 +0200 @@ -333,10 +333,12 @@ IndexedLocationNode location = IndexedLocationNode.create(LocationNode.ANY_LOCATION, store.storeKind(), store.displacement(), store.offset(), graph); location.setIndexScalingEnabled(false); WriteNode write = graph.add(new WriteNode(store.object(), store.value(), location)); - FieldWriteBarrier barrier = graph.add(new FieldWriteBarrier(store.object())); + if (store.storeKind() == CiKind.Object && !store.value().isNullConstant()) { + FieldWriteBarrier barrier = graph.add(new FieldWriteBarrier(store.object())); + graph.addBeforeFixed(write, barrier); + } write.setStateAfter(store.stateAfter()); graph.replaceFixedWithFixed(store, write); - graph.addBeforeFixed(write, barrier); } else if (n instanceof ReadHubNode) { ReadHubNode objectClassNode = (ReadHubNode) n; LocationNode location = LocationNode.create(LocationNode.FINAL_LOCATION, CiKind.Object, config.hubOffset, graph);