50 |
50 |
51 NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", |
51 NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", |
52 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); |
52 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); |
53 ParCompactionManager* cm = |
53 ParCompactionManager* cm = |
54 ParCompactionManager::gc_thread_compaction_manager(which); |
54 ParCompactionManager::gc_thread_compaction_manager(which); |
|
55 |
55 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
56 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
|
57 CLDToOopClosure mark_and_push_from_clds(&mark_and_push_closure, true); |
56 CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true); |
58 CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true); |
57 |
59 |
58 if (_java_thread != NULL) |
60 if (_java_thread != NULL) |
59 _java_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); |
61 _java_thread->oops_do( |
|
62 &mark_and_push_closure, |
|
63 &mark_and_push_from_clds, |
|
64 &mark_and_push_in_blobs); |
60 |
65 |
61 if (_vm_thread != NULL) |
66 if (_vm_thread != NULL) |
62 _vm_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); |
67 _vm_thread->oops_do( |
|
68 &mark_and_push_closure, |
|
69 &mark_and_push_from_clds, |
|
70 &mark_and_push_in_blobs); |
63 |
71 |
64 // Do the real work |
72 // Do the real work |
65 cm->follow_marking_stacks(); |
73 cm->follow_marking_stacks(); |
66 } |
74 } |
67 |
75 |
87 |
95 |
88 case threads: |
96 case threads: |
89 { |
97 { |
90 ResourceMark rm; |
98 ResourceMark rm; |
91 CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true); |
99 CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true); |
92 Threads::oops_do(&mark_and_push_closure, &each_active_code_blob); |
100 CLDToOopClosure mark_and_push_from_cld(&mark_and_push_closure); |
|
101 Threads::oops_do(&mark_and_push_closure, &mark_and_push_from_cld, &each_active_code_blob); |
93 } |
102 } |
94 break; |
103 break; |
95 |
104 |
96 case object_synchronizer: |
105 case object_synchronizer: |
97 ObjectSynchronizer::oops_do(&mark_and_push_closure); |
106 ObjectSynchronizer::oops_do(&mark_and_push_closure); |