--- old/src/share/vm/gc/shared/genCollectedHeap.cpp 2017-04-25 16:45:09.891173977 +0200 +++ new/src/share/vm/gc/shared/genCollectedHeap.cpp 2017-04-25 16:45:09.739173983 +0200 @@ -126,8 +126,11 @@ initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size())); - _rem_set = collector_policy()->create_rem_set(reserved_region()); - set_barrier_set(rem_set()->bs()); + _rem_set = new CardTableRS(reserved_region()); + _rem_set->initialize(); + CardTableModRefBS *bs = new CardTableModRefBS(_rem_set); + bs->initialize(); + set_barrier_set(bs); ReservedSpace young_rs = heap_rs.first_part(gen_policy()->young_gen_spec()->max_size(), false, false); _young_gen = gen_policy()->young_gen_spec()->init(young_rs, rem_set()); @@ -1313,3 +1316,19 @@ } #endif } + +void GenCollectedHeap::safepoint_synchronize_begin() { +#if INCLUDE_ALL_GCS + if (UseConcMarkSweepGC) { + ConcurrentMarkSweepThread::synchronize(false); + } +#endif +} + +void GenCollectedHeap::safepoint_synchronize_end() { +#if INCLUDE_ALL_GCS + if (UseConcMarkSweepGC) { + ConcurrentMarkSweepThread::desynchronize(false); + } +#endif +}