Mercurial > hg > truffle
changeset 10734:8b8587c32812
Adjust load/store hub intrinsics to account for Compressed Klass pointers
author | Christos Kotselidis <christos.kotselidis@oracle.com> |
---|---|
date | Fri, 12 Jul 2013 14:38:47 +0200 |
parents | 6621bc66bfa4 |
children | 49a0bd6b0605 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Fri Jul 12 14:20:53 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Fri Jul 12 14:38:47 2013 +0200 @@ -277,7 +277,7 @@ public static void initializeObjectHeader(Word memory, Word markWord, Word hub) { memory.writeWord(markOffset(), markWord, MARK_WORD_LOCATION); - memory.writeWord(hubOffset(), hub, HUB_LOCATION); + StoreHubNode.write(memory.toObject(), hub); } @Fold @@ -473,6 +473,7 @@ } public static Word loadWordFromObject(Object object, int offset) { + assert offset != hubOffset() : "Use loadHubIntrinsic instead"; return loadWordFromObjectIntrinsic(object, 0, offset, getWordKind()); } @@ -488,7 +489,10 @@ @SuppressWarnings("unused") @NodeIntrinsic(value = LoadHubNode.class, setStampFromReturnType = true) static Word loadHubIntrinsic(Object object, @ConstantNodeParameter Kind word) { - return Word.box(unsafeReadWord(object, hubOffset())); + if (wordKind() == Kind.Int) { + return Word.box((int) unsafeReadKlassPointer(object)); + } + return Word.box(unsafeReadKlassPointer(object)); } @Fold