8039042: G1: Phantom zeros in cardtable

Reviewed-by: tschatzl, mgerdin
This commit is contained in:
Per Lidén 2014-05-20 10:24:30 +02:00
parent 92baa3214c
commit eddf95338d

View file

@ -96,7 +96,15 @@ void G1SATBCardTableModRefBS::g1_mark_as_young(const MemRegion& mr) {
jbyte *const first = byte_for(mr.start());
jbyte *const last = byte_after(mr.last());
memset(first, g1_young_gen, last - first);
// Below we may use an explicit loop instead of memset() because on
// certain platforms memset() can give concurrent readers phantom zeros.
if (UseMemSetInBOT) {
memset(first, g1_young_gen, last - first);
} else {
for (jbyte* i = first; i < last; i++) {
*i = g1_young_gen;
}
}
}
#ifndef PRODUCT