103 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system
104 template <typename IsAlive>
105 void update_all_roots(OopClosure* oops,
106 CLDClosure* clds,
107 CodeBlobClosure* blobs,
108 ThreadClosure* thread_cl,
109 uint worker_id);
110
111 // For slow debug/verification code
112 void process_all_roots_slow(OopClosure* oops);
113
114 // Number of worker threads used by the root processor.
115 uint n_workers() const;
116 };
117
118 class ShenandoahRootEvacuator : public StackObj {
119 SubTasksDone* _evacuation_tasks;
120 StrongRootsScope _srs;
121 ShenandoahPhaseTimings::Phase _phase;
122 ShenandoahCsetCodeRootsIterator _coderoots_cset_iterator;
123
124 enum Shenandoah_evacuate_roots_tasks {
125 SHENANDOAH_EVAC_jvmti_oops_do,
126 // Leave this one last.
127 SHENANDOAH_EVAC_NumElements
128 };
129 public:
130 ShenandoahRootEvacuator(ShenandoahHeap* heap, uint n_workers,
131 ShenandoahPhaseTimings::Phase phase);
132 ~ShenandoahRootEvacuator();
133
134 void process_evacuate_roots(OopClosure* oops,
135 CodeBlobClosure* blobs,
136 uint worker_id);
137
138 // Number of worker threads used by the root processor.
139 uint n_workers() const;
140 };
141 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHROOTPROCESSOR_HPP
|
103 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system
104 template <typename IsAlive>
105 void update_all_roots(OopClosure* oops,
106 CLDClosure* clds,
107 CodeBlobClosure* blobs,
108 ThreadClosure* thread_cl,
109 uint worker_id);
110
111 // For slow debug/verification code
112 void process_all_roots_slow(OopClosure* oops);
113
114 // Number of worker threads used by the root processor.
115 uint n_workers() const;
116 };
117
118 class ShenandoahRootEvacuator : public StackObj {
119 SubTasksDone* _evacuation_tasks;
120 StrongRootsScope _srs;
121 ShenandoahPhaseTimings::Phase _phase;
122 ShenandoahCsetCodeRootsIterator _coderoots_cset_iterator;
123 OopStorage::ParState<false, false> _par_state_string;
124
125 enum Shenandoah_evacuate_roots_tasks {
126 SHENANDOAH_EVAC_Universe_oops_do,
127 SHENANDOAH_EVAC_ObjectSynchronizer_oops_do,
128 SHENANDOAH_EVAC_Management_oops_do,
129 SHENANDOAH_EVAC_SystemDictionary_oops_do,
130 SHENANDOAH_EVAC_jvmti_oops_do,
131 // Leave this one last.
132 SHENANDOAH_EVAC_NumElements
133 };
134 public:
135 ShenandoahRootEvacuator(ShenandoahHeap* heap, uint n_workers,
136 ShenandoahPhaseTimings::Phase phase);
137 ~ShenandoahRootEvacuator();
138
139 void process_evacuate_roots(OopClosure* oops,
140 CodeBlobClosure* blobs,
141 uint worker_id);
142
143 // Number of worker threads used by the root processor.
144 uint n_workers() const;
145 };
146 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHROOTPROCESSOR_HPP
|