changeset 11277:e75e8ffdf87c

Made Word.box() private: Outside users should use the different signed() and unsigned() methods to ensure proper expansion of 32-bit values on 64-bit systems.
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 09 Aug 2013 10:49:18 -0700
parents abba25b953a2
children 6d28ce8cdeb7
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java
diffstat 3 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Fri Aug 09 16:09:33 2013 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Fri Aug 09 10:49:18 2013 -0700
@@ -56,6 +56,6 @@
 
     @NodeIntrinsic
     public static Word get() {
-        return Word.box(unsafeReadWord(Thread.currentThread(), eetopOffset()));
+        return Word.unsigned(unsafeReadWord(Thread.currentThread(), eetopOffset()));
     }
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java	Fri Aug 09 16:09:33 2013 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java	Fri Aug 09 10:49:18 2013 -0700
@@ -490,16 +490,13 @@
     @SuppressWarnings("unused")
     @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true)
     private static Word loadWordFromObjectIntrinsic(Object object, @ConstantNodeParameter int displacement, long offset, @ConstantNodeParameter Kind wordKind) {
-        return Word.box(unsafeReadWord(object, offset + displacement));
+        return Word.unsigned(unsafeReadWord(object, offset + displacement));
     }
 
     @SuppressWarnings("unused")
     @NodeIntrinsic(value = LoadHubNode.class, setStampFromReturnType = true)
     static Word loadHubIntrinsic(Object object, @ConstantNodeParameter Kind word, GuardingNode anchor) {
-        if (wordKind() == Kind.Int) {
-            return Word.box((int) unsafeReadKlassPointer(object));
-        }
-        return Word.box(unsafeReadKlassPointer(object));
+        return Word.unsigned(unsafeReadKlassPointer(object));
     }
 
     @Fold
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java	Fri Aug 09 16:09:33 2013 +0200
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java	Fri Aug 09 10:49:18 2013 -0700
@@ -73,7 +73,11 @@
     }
      // @formatter:on
 
-    public static Word box(long val) {
+    /*
+     * Outside users should use the different signed() and unsigned() methods to ensure proper
+     * expansion of 32-bit values on 64-bit systems.
+     */
+    private static Word box(long val) {
         return HostedWord.boxLong(val);
     }