--- old/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp 2018-11-26 21:50:57.928497995 +0100 +++ new/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp 2018-11-26 21:50:57.496495853 +0100 @@ -26,6 +26,7 @@ #define SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP #include "gc/g1/g1CollectedHeap.inline.hpp" +#include "gc/g1/g1OopStarChunkedList.inline.hpp" #include "gc/g1/g1ParScanThreadState.hpp" #include "gc/g1/g1RemSet.hpp" #include "oops/access.inline.hpp" @@ -203,4 +204,23 @@ _trim_ticks = Tickspan(); } +template +inline void G1ParScanThreadState::remember_root_into_optional_region(T* p) { + oop o = RawAccess::oop_load(p); + uint index = _g1h->heap_region_containing(o)->index_in_opt_cset(); + _oops_into_optional_regions[index].push_root(p); +} + +template +inline void G1ParScanThreadState::remember_reference_into_optional_region(T* p) { + oop o = RawAccess::oop_load(p); + uint index = _g1h->heap_region_containing(o)->index_in_opt_cset(); + _oops_into_optional_regions[index].push_oop(p); + DEBUG_ONLY(verify_ref(p);) +} + +G1OopStarChunkedList* G1ParScanThreadState::oops_into_optional_region(const HeapRegion* hr) { + return &_oops_into_optional_regions[hr->index_in_opt_cset()]; +} + #endif // SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP