From: <rg...@us...> - 2008-06-30 05:43:38
|
Revision: 14626 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=14626&view=rev Author: rgarner Date: 2008-06-29 22:43:36 -0700 (Sun, 29 Jun 2008) Log Message: ----------- Fix sub-int load methods Modified Paths: -------------- rvmroot/trunk/MMTk/harness/vmmagic/org/vmmagic/unboxed/SimulatedMemory.java Modified: rvmroot/trunk/MMTk/harness/vmmagic/org/vmmagic/unboxed/SimulatedMemory.java =================================================================== --- rvmroot/trunk/MMTk/harness/vmmagic/org/vmmagic/unboxed/SimulatedMemory.java 2008-06-30 05:34:58 UTC (rev 14625) +++ rvmroot/trunk/MMTk/harness/vmmagic/org/vmmagic/unboxed/SimulatedMemory.java 2008-06-30 05:43:36 UTC (rev 14626) @@ -84,16 +84,18 @@ public static double setDouble(Address address, double value) { return setDouble(address, value, ZERO); } public static byte getByte(Address address, Offset offset) { - int shift = ((address.value + offset.value) & ~WORD_MASK) << LOG_BITS_IN_BYTE; - int value = getInt(address, offset) >>> shift; + int byteShift = ((address.value + offset.value) & ~WORD_MASK); + int bitShift = byteShift << LOG_BITS_IN_BYTE; + int value = getInt(address.minus(byteShift), offset) >>> bitShift; return (byte)value; } public static char getChar(Address address, Offset offset) { - int shift = ((address.value + offset.value) & ~WORD_MASK) << LOG_BITS_IN_BYTE; - assert shift == 0 || shift == 16: "misaligned char access"; - int value = getInt(address, offset); - return (char)(value >>> shift); + int byteShift = ((address.value + offset.value) & ~WORD_MASK); + int bitShift = byteShift << LOG_BITS_IN_BYTE; + assert bitShift == 0 || bitShift == 16: "misaligned char access"; + int value = getInt(address.minus(byteShift), offset); + return (char)(value >>> bitShift); } public static short getShort(Address address, Offset offset) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |