equal
deleted
inserted
replaced
37 NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", |
37 NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", |
38 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); |
38 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); |
39 ParCompactionManager* cm = |
39 ParCompactionManager* cm = |
40 ParCompactionManager::gc_thread_compaction_manager(which); |
40 ParCompactionManager::gc_thread_compaction_manager(which); |
41 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
41 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
|
42 CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true); |
42 |
43 |
43 if (_java_thread != NULL) |
44 if (_java_thread != NULL) |
44 _java_thread->oops_do(&mark_and_push_closure); |
45 _java_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); |
45 |
46 |
46 if (_vm_thread != NULL) |
47 if (_vm_thread != NULL) |
47 _vm_thread->oops_do(&mark_and_push_closure); |
48 _vm_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); |
48 |
49 |
49 // Do the real work |
50 // Do the real work |
50 cm->drain_marking_stacks(&mark_and_push_closure); |
51 cm->drain_marking_stacks(&mark_and_push_closure); |
51 } |
52 } |
52 |
53 |
76 break; |
77 break; |
77 |
78 |
78 case threads: |
79 case threads: |
79 { |
80 { |
80 ResourceMark rm; |
81 ResourceMark rm; |
81 Threads::oops_do(&mark_and_push_closure); |
82 CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true); |
|
83 Threads::oops_do(&mark_and_push_closure, &each_active_code_blob); |
82 } |
84 } |
83 break; |
85 break; |
84 |
86 |
85 case object_synchronizer: |
87 case object_synchronizer: |
86 ObjectSynchronizer::oops_do(&mark_and_push_closure); |
88 ObjectSynchronizer::oops_do(&mark_and_push_closure); |
102 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); |
104 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); |
103 break; |
105 break; |
104 |
106 |
105 case vm_symbols: |
107 case vm_symbols: |
106 vmSymbols::oops_do(&mark_and_push_closure); |
108 vmSymbols::oops_do(&mark_and_push_closure); |
|
109 break; |
|
110 |
|
111 case code_cache: |
|
112 // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. |
|
113 //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(&mark_and_push_closure)); |
107 break; |
114 break; |
108 |
115 |
109 default: |
116 default: |
110 fatal("Unknown root type"); |
117 fatal("Unknown root type"); |
111 } |
118 } |