< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp

Print this page
rev 59972 : 8250841: Shenandoah: need to reset/finish dead counters for StringTable/ResolvedMethodTable during STW root processing


  59   ShenandoahVMRoot<CONCURRENT>(storage, phase, par_phase) {
  60 }
  61 
  62 inline ShenandoahWeakRoot<false>::ShenandoahWeakRoot(OopStorage* storage,
  63   ShenandoahPhaseTimings::Phase phase,  ShenandoahPhaseTimings::ParPhase par_phase) :
  64   _itr(storage), _phase(phase), _par_phase(par_phase) {
  65 }
  66 
  67 template <typename IsAliveClosure, typename KeepAliveClosure>
  68 void ShenandoahWeakRoot<false /* concurrent */>::weak_oops_do(IsAliveClosure* is_alive, KeepAliveClosure* keep_alive, uint worker_id) {
  69   ShenandoahWorkerTimingsTracker timer(_phase, _par_phase, worker_id);
  70   _itr.weak_oops_do(is_alive, keep_alive);
  71 }
  72 
  73 template <bool CONCURRENT>
  74 ShenandoahWeakRoots<CONCURRENT>::ShenandoahWeakRoots() :
  75   _jni_roots(OopStorageSet::jni_weak(), ShenandoahPhaseTimings::JNIWeakRoots),
  76   _string_table_roots(OopStorageSet::string_table_weak(), ShenandoahPhaseTimings::StringTableRoots),
  77   _resolved_method_table_roots(OopStorageSet::resolved_method_table_weak(), ShenandoahPhaseTimings::ResolvedMethodTableRoots),
  78   _vm_roots(OopStorageSet::vm_weak(), ShenandoahPhaseTimings::VMWeakRoots) {








  79 }
  80 
  81 template <bool CONCURRENT>
  82 template <typename Closure>
  83 void ShenandoahWeakRoots<CONCURRENT>::oops_do(Closure* cl, uint worker_id) {
  84   _jni_roots.oops_do(cl, worker_id);
  85   _string_table_roots.oops_do(cl, worker_id);
  86   _resolved_method_table_roots.oops_do(cl, worker_id);
  87   _vm_roots.oops_do(cl, worker_id);
  88 }
  89 
  90 inline ShenandoahWeakRoots<false /* concurrent */>::ShenandoahWeakRoots(ShenandoahPhaseTimings::Phase phase) :
  91   _jni_roots(OopStorageSet::jni_weak(), phase, ShenandoahPhaseTimings::JNIWeakRoots),
  92   _string_table_roots(OopStorageSet::string_table_weak(), phase, ShenandoahPhaseTimings::StringTableRoots),
  93   _resolved_method_table_roots(OopStorageSet::resolved_method_table_weak(), phase, ShenandoahPhaseTimings::ResolvedMethodTableRoots),
  94   _vm_roots(OopStorageSet::vm_weak(), phase, ShenandoahPhaseTimings::VMWeakRoots) {
  95 }
  96 
  97 template <typename IsAliveClosure, typename KeepAliveClosure>
  98 void ShenandoahWeakRoots<false /* concurrent*/>::weak_oops_do(IsAliveClosure* is_alive, KeepAliveClosure* keep_alive, uint worker_id) {




  59   ShenandoahVMRoot<CONCURRENT>(storage, phase, par_phase) {
  60 }
  61 
  62 inline ShenandoahWeakRoot<false>::ShenandoahWeakRoot(OopStorage* storage,
  63   ShenandoahPhaseTimings::Phase phase,  ShenandoahPhaseTimings::ParPhase par_phase) :
  64   _itr(storage), _phase(phase), _par_phase(par_phase) {
  65 }
  66 
  67 template <typename IsAliveClosure, typename KeepAliveClosure>
  68 void ShenandoahWeakRoot<false /* concurrent */>::weak_oops_do(IsAliveClosure* is_alive, KeepAliveClosure* keep_alive, uint worker_id) {
  69   ShenandoahWorkerTimingsTracker timer(_phase, _par_phase, worker_id);
  70   _itr.weak_oops_do(is_alive, keep_alive);
  71 }
  72 
  73 template <bool CONCURRENT>
  74 ShenandoahWeakRoots<CONCURRENT>::ShenandoahWeakRoots() :
  75   _jni_roots(OopStorageSet::jni_weak(), ShenandoahPhaseTimings::JNIWeakRoots),
  76   _string_table_roots(OopStorageSet::string_table_weak(), ShenandoahPhaseTimings::StringTableRoots),
  77   _resolved_method_table_roots(OopStorageSet::resolved_method_table_weak(), ShenandoahPhaseTimings::ResolvedMethodTableRoots),
  78   _vm_roots(OopStorageSet::vm_weak(), ShenandoahPhaseTimings::VMWeakRoots) {
  79   StringTable::reset_dead_counter();
  80   ResolvedMethodTable::reset_dead_counter();
  81 }
  82 
  83 template <bool CONCURRENT>
  84 ShenandoahWeakRoots<CONCURRENT>::~ShenandoahWeakRoots() {
  85   StringTable::finish_dead_counter();
  86   ResolvedMethodTable::finish_dead_counter();
  87 }
  88 
  89 template <bool CONCURRENT>
  90 template <typename Closure>
  91 void ShenandoahWeakRoots<CONCURRENT>::oops_do(Closure* cl, uint worker_id) {
  92   _jni_roots.oops_do(cl, worker_id);
  93   _string_table_roots.oops_do(cl, worker_id);
  94   _resolved_method_table_roots.oops_do(cl, worker_id);
  95   _vm_roots.oops_do(cl, worker_id);
  96 }
  97 
  98 inline ShenandoahWeakRoots<false /* concurrent */>::ShenandoahWeakRoots(ShenandoahPhaseTimings::Phase phase) :
  99   _jni_roots(OopStorageSet::jni_weak(), phase, ShenandoahPhaseTimings::JNIWeakRoots),
 100   _string_table_roots(OopStorageSet::string_table_weak(), phase, ShenandoahPhaseTimings::StringTableRoots),
 101   _resolved_method_table_roots(OopStorageSet::resolved_method_table_weak(), phase, ShenandoahPhaseTimings::ResolvedMethodTableRoots),
 102   _vm_roots(OopStorageSet::vm_weak(), phase, ShenandoahPhaseTimings::VMWeakRoots) {
 103 }
 104 
 105 template <typename IsAliveClosure, typename KeepAliveClosure>
 106 void ShenandoahWeakRoots<false /* concurrent*/>::weak_oops_do(IsAliveClosure* is_alive, KeepAliveClosure* keep_alive, uint worker_id) {


< prev index next >