mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8202649: Move the Parallel GC specific task creation functions out of Threads
Reviewed-by: ehelin, pliden
This commit is contained in:
parent
99072b90d7
commit
c590979683
8 changed files with 50 additions and 51 deletions
|
@ -2049,6 +2049,17 @@ GCTaskManager* const PSParallelCompact::gc_task_manager() {
|
|||
return ParallelScavengeHeap::gc_task_manager();
|
||||
}
|
||||
|
||||
class PCAddThreadRootsMarkingTaskClosure : public ThreadClosure {
|
||||
private:
|
||||
GCTaskQueue* _q;
|
||||
|
||||
public:
|
||||
PCAddThreadRootsMarkingTaskClosure(GCTaskQueue* q) : _q(q) { }
|
||||
void do_thread(Thread* t) {
|
||||
_q->enqueue(new ThreadRootsMarkingTask(t));
|
||||
}
|
||||
};
|
||||
|
||||
void PSParallelCompact::marking_phase(ParCompactionManager* cm,
|
||||
bool maximum_heap_compaction,
|
||||
ParallelOldTracer *gc_tracer) {
|
||||
|
@ -2077,7 +2088,8 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm,
|
|||
q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::universe));
|
||||
q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::jni_handles));
|
||||
// We scan the thread roots in parallel
|
||||
Threads::create_thread_roots_marking_tasks(q);
|
||||
PCAddThreadRootsMarkingTaskClosure cl(q);
|
||||
Threads::java_threads_and_vm_thread_do(&cl);
|
||||
q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::object_synchronizer));
|
||||
q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::management));
|
||||
q->enqueue(new MarkFromRootsTask(MarkFromRootsTask::system_dictionary));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue