changeset 10948:46c6ee6f1832

Fixed anchror for unsafe load snippet
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Fri, 02 Aug 2013 14:53:08 +0200
parents e8dac30e274d
children 8ede7cd7318e
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeLoadSnippets.java
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeLoadSnippets.java	Fri Aug 02 14:43:58 2013 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeLoadSnippets.java	Fri Aug 02 14:53:08 2013 +0200
@@ -26,6 +26,7 @@
 import static com.oracle.graal.replacements.SnippetTemplate.*;
 
 import com.oracle.graal.api.code.*;
+import com.oracle.graal.hotspot.nodes.*;
 import com.oracle.graal.nodes.HeapAccess.BarrierType;
 import com.oracle.graal.nodes.extended.*;
 import com.oracle.graal.nodes.spi.*;
@@ -39,11 +40,12 @@
 
     @Snippet
     public static Object lowerUnsafeLoad(Object object, long offset, int disp) {
+        Object fixedObject = FixedValueAnchorNode.getObject(object);
         long displacement = disp + offset;
         if (object instanceof java.lang.ref.Reference && referentOffset() == displacement) {
-            return Word.fromObject(object).readObject((int) displacement, BarrierType.PRECISE, true);
+            return Word.fromObject(fixedObject).readObject((int) displacement, BarrierType.PRECISE, true);
         } else {
-            return Word.fromObject(object).readObject((int) displacement, BarrierType.NONE, true);
+            return Word.fromObject(fixedObject).readObject((int) displacement, BarrierType.NONE, true);
         }
     }