changeset 10545:dc5b2b5089bd

Assume that all unsafe loads generated after guard lowering derive from ArrayCopy Intrinsics
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Thu, 27 Jun 2013 11:16:18 +0200
parents 7b4afef906ca
children a6d6e6afd897
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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)));