# HG changeset patch # User Josef Eisl # Date 1418760132 -3600 # Node ID b6e98df9ba7de202a63f2d4e5fb4a1b1b1f026fa # Parent 5dcb9fdea75ad832f433ff032205058265c580c4 HotSpotReferenceMap: fix bitmap clearing in setOop()/clearOop() and setNarrowOop()/clearNarrowOop(). diff -r 5dcb9fdea75a -r b6e98df9ba7d graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java Wed Dec 17 08:04:57 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java Tue Dec 16 21:02:12 2014 +0100 @@ -94,7 +94,7 @@ private static void setOop(BitSet map, int startIdx, LIRKind kind) { int length = kind.getPlatformKind().getVectorLength(); - map.clear(BITS_PER_WORD * startIdx, BITS_PER_WORD * (startIdx + length) - 1); + map.clear(BITS_PER_WORD * startIdx, BITS_PER_WORD * (startIdx + length)); for (int i = 0, idx = BITS_PER_WORD * startIdx; i < length; i++, idx += BITS_PER_WORD) { if (kind.isReference(i)) { map.set(idx); @@ -105,7 +105,7 @@ private static void setNarrowOop(BitSet map, int idx, LIRKind kind) { int length = kind.getPlatformKind().getVectorLength(); int nextIdx = idx + (length + 1) / 2; - map.clear(BITS_PER_WORD * idx, BITS_PER_WORD * nextIdx - 1); + map.clear(BITS_PER_WORD * idx, BITS_PER_WORD * nextIdx); for (int i = 0, regIdx = BITS_PER_WORD * idx; i < length; i += 2, regIdx += BITS_PER_WORD) { if (kind.isReference(i)) { map.set(regIdx); @@ -179,13 +179,13 @@ private static void clearOop(BitSet map, int startIdx, LIRKind kind) { int length = kind.getPlatformKind().getVectorLength(); - map.clear(BITS_PER_WORD * startIdx, BITS_PER_WORD * (startIdx + length) - 1); + map.clear(BITS_PER_WORD * startIdx, BITS_PER_WORD * (startIdx + length)); } private static void clearNarrowOop(BitSet map, int idx, LIRKind kind) { int length = kind.getPlatformKind().getVectorLength(); int nextIdx = idx + (length + 1) / 2; - map.clear(BITS_PER_WORD * idx, BITS_PER_WORD * nextIdx - 1); + map.clear(BITS_PER_WORD * idx, BITS_PER_WORD * nextIdx); } public void clearRegister(int idx, LIRKind kind) {