# HG changeset patch # User Christian Wimmer # Date 1376070558 25200 # Node ID e75e8ffdf87cca0818e40b6bda2a54370c5473f6 # Parent abba25b953a2035475696121843b903e71b2ecf1 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. diff -r abba25b953a2 -r e75e8ffdf87c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java --- 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())); } } diff -r abba25b953a2 -r e75e8ffdf87c graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java --- 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 diff -r abba25b953a2 -r e75e8ffdf87c graal/com.oracle.graal.word/src/com/oracle/graal/word/Word.java --- 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); }