# HG changeset patch # User Christos Kotselidis # Date 1372324578 -7200 # Node ID dc5b2b5089bd00036be8d0a2f531478904a56fad # Parent 7b4afef906ca7d57efb6b4b349ecf36977d8d7c6 Assume that all unsafe loads generated after guard lowering derive from ArrayCopy Intrinsics diff -r 7b4afef906ca -r dc5b2b5089bd 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 Thu Jun 27 11:14:46 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Thu Jun 27 11:16:18 2013 +0200 @@ -618,7 +618,7 @@ } else if (n instanceof UnsafeLoadNode) { UnsafeLoadNode load = (UnsafeLoadNode) n; assert load.kind() != Kind.Illegal; - lowerUnsafeLoad(load); + lowerUnsafeLoad(load, tool); } else if (n instanceof UnsafeStoreNode) { UnsafeStoreNode store = (UnsafeStoreNode) n; IndexedLocationNode location = IndexedLocationNode.create(ANY_LOCATION, store.accessKind(), store.displacement(), store.offset(), graph, 1); @@ -854,11 +854,11 @@ * TODO (ck): Replace the code below with a snippet. * */ - private void lowerUnsafeLoad(UnsafeLoadNode load) { + private void lowerUnsafeLoad(UnsafeLoadNode load, LoweringTool tool) { StructuredGraph graph = load.graph(); boolean compress = (!load.object().isNullConstant() && load.accessKind() == Kind.Object); if (config().useG1GC && load.object().kind() == Kind.Object && load.accessKind() == Kind.Object && !load.object().objectStamp().alwaysNull() && load.object().objectStamp().type() != null && - !(load.object().objectStamp().type().isArray())) { + !(load.object().objectStamp().type().isArray()) && tool.getLoweringType() != LoweringType.AFTER_GUARDS) { IndexedLocationNode location = IndexedLocationNode.create(ANY_LOCATION, load.accessKind(), load.displacement(), load.offset(), graph, 1); // Calculate offset+displacement IntegerAddNode addNode = graph.add(new IntegerAddNode(Kind.Long, load.offset(), ConstantNode.forLong(load.displacement(), graph)));