--- old/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp 2015-08-19 16:27:32.571424014 -0400 +++ new/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp 2015-08-19 16:27:32.483423577 -0400 @@ -27,6 +27,7 @@ #include "gc/g1/g1SATBCardTableModRefBS.hpp" #include "gc/g1/heapRegion.hpp" #include "gc/g1/satbQueue.hpp" +#include "gc/shared/memset_with_concurrent_readers.hpp" #include "oops/oop.inline.hpp" #include "runtime/atomic.inline.hpp" #include "runtime/mutexLocker.hpp" @@ -108,15 +109,7 @@ jbyte *const first = byte_for(mr.start()); jbyte *const last = byte_after(mr.last()); - // 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; - } - } + memset_with_concurrent_readers(first, g1_young_gen, last - first); } #ifndef PRODUCT