diff -r 52672a450193 -r 76df293e57aa src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp --- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Fri Apr 29 12:46:05 2016 -0400 +++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Tue May 03 13:57:12 2016 -0400 @@ -3233,6 +3233,13 @@ if (new_block != cur_block) { cur_block = new_block; sd.block(cur_block)->set_offset(bitmap->bits_to_words(live_bits)); + +#ifdef MIPS64 + /* 2016/5/4 Jin: On 3A2000-B, when multiple threads write to + the same memory location without explict synchronization, + sync is required for access correctness. */ + OrderAccess::fence(); +#endif } const size_t end_bit = bitmap->find_obj_end(beg_bit, range_end);