108 FlatProfiler::oops_do(&mark_and_push_closure); 109 break; 110 111 case management: 112 Management::oops_do(&mark_and_push_closure); 113 break; 114 115 case jvmti: 116 JvmtiExport::oops_do(&mark_and_push_closure); 117 break; 118 119 case system_dictionary: 120 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); 121 break; 122 123 case class_loader_data: 124 ClassLoaderDataGraph::always_strong_oops_do(&mark_and_push_closure, &follow_klass_closure, true); 125 break; 126 127 case code_cache: 128 // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. 129 //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(&mark_and_push_closure)); 130 break; 131 132 default: 133 fatal("Unknown root type"); 134 } 135 136 // Do the real work 137 cm->follow_marking_stacks(); 138 } 139 140 141 // 142 // RefProcTaskProxy 143 // 144 145 void RefProcTaskProxy::do_it(GCTaskManager* manager, uint which) 146 { 147 assert(ParallelScavengeHeap::heap()->is_gc_active(), "called outside gc"); 148 149 ParCompactionManager* cm = | 108 FlatProfiler::oops_do(&mark_and_push_closure); 109 break; 110 111 case management: 112 Management::oops_do(&mark_and_push_closure); 113 break; 114 115 case jvmti: 116 JvmtiExport::oops_do(&mark_and_push_closure); 117 break; 118 119 case system_dictionary: 120 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); 121 break; 122 123 case class_loader_data: 124 ClassLoaderDataGraph::always_strong_oops_do(&mark_and_push_closure, &follow_klass_closure, true); 125 break; 126 127 case code_cache: 128 // Treat nmethods as strong roots for mark/sweep if we don't intend to unload them. 129 if (!ClassUnloading) { 130 CodeBlobToOopClosure cl(&mark_and_push_closure, false); 131 CodeCache::scavenge_root_nmethods_do(&cl); 132 } 133 break; 134 135 default: 136 fatal("Unknown root type"); 137 } 138 139 // Do the real work 140 cm->follow_marking_stacks(); 141 } 142 143 144 // 145 // RefProcTaskProxy 146 // 147 148 void RefProcTaskProxy::do_it(GCTaskManager* manager, uint which) 149 { 150 assert(ParallelScavengeHeap::heap()->is_gc_active(), "called outside gc"); 151 152 ParCompactionManager* cm = |