67
68 public:
69 ShenandoahWeakSerialRoot(WeakOopsDo oops_do, ShenandoahPhaseTimings::GCParPhases);
70 void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
71 };
72
73 #if INCLUDE_JVMTI
74 class ShenandoahJVMTIWeakRoot : public ShenandoahWeakSerialRoot {
75 public:
76 ShenandoahJVMTIWeakRoot();
77 };
78 #endif // INCLUDE_JVMTI
79
80 #if INCLUDE_JFR
81 class ShenandoahJFRWeakRoot : public ShenandoahWeakSerialRoot {
82 public:
83 ShenandoahJFRWeakRoot();
84 };
85 #endif // INCLUDE_JFR
86
87 class ShenandoahSerialWeakRoots {
88 private:
89 JVMTI_ONLY(ShenandoahJVMTIWeakRoot _jvmti_weak_roots;)
90 JFR_ONLY(ShenandoahJFRWeakRoot _jfr_weak_roots;)
91 public:
92 void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
93 void weak_oops_do(OopClosure* cl, uint worker_id);
94 };
95
96 template <bool CONCURRENT>
97 class ShenandoahVMRoot {
98 private:
99 OopStorage::ParState<CONCURRENT, false /* is_const */> _itr;
100 const ShenandoahPhaseTimings::GCParPhases _phase;
101 public:
102 ShenandoahVMRoot(OopStorage* storage, ShenandoahPhaseTimings::GCParPhases phase);
103
104 template <typename Closure>
105 void oops_do(Closure* cl, uint worker_id);
106 };
107
108 template <bool CONCURRENT>
109 class ShenandoahWeakRoot : public ShenandoahVMRoot<CONCURRENT> {
110 public:
|
67
68 public:
69 ShenandoahWeakSerialRoot(WeakOopsDo oops_do, ShenandoahPhaseTimings::GCParPhases);
70 void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
71 };
72
73 #if INCLUDE_JVMTI
74 class ShenandoahJVMTIWeakRoot : public ShenandoahWeakSerialRoot {
75 public:
76 ShenandoahJVMTIWeakRoot();
77 };
78 #endif // INCLUDE_JVMTI
79
80 #if INCLUDE_JFR
81 class ShenandoahJFRWeakRoot : public ShenandoahWeakSerialRoot {
82 public:
83 ShenandoahJFRWeakRoot();
84 };
85 #endif // INCLUDE_JFR
86
87 #if INCLUDE_TSAN
88 class ShenandoahTSANWeakRoot : public ShenandoahWeakSerialRoot {
89 public:
90 ShenandoahTSANWeakRoot();
91 };
92 #endif // INCLUDE_TSAN
93
94 class ShenandoahSerialWeakRoots {
95 private:
96 JVMTI_ONLY(ShenandoahJVMTIWeakRoot _jvmti_weak_roots;)
97 JFR_ONLY(ShenandoahJFRWeakRoot _jfr_weak_roots;)
98 TSAN_ONLY(ShenandoahTSANWeakRoot _tsan_weak_roots;)
99 public:
100 void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
101 void weak_oops_do(OopClosure* cl, uint worker_id);
102 };
103
104 template <bool CONCURRENT>
105 class ShenandoahVMRoot {
106 private:
107 OopStorage::ParState<CONCURRENT, false /* is_const */> _itr;
108 const ShenandoahPhaseTimings::GCParPhases _phase;
109 public:
110 ShenandoahVMRoot(OopStorage* storage, ShenandoahPhaseTimings::GCParPhases phase);
111
112 template <typename Closure>
113 void oops_do(Closure* cl, uint worker_id);
114 };
115
116 template <bool CONCURRENT>
117 class ShenandoahWeakRoot : public ShenandoahVMRoot<CONCURRENT> {
118 public:
|