103 break; 104 105 case object_synchronizer: 106 ObjectSynchronizer::oops_do(&mark_and_push_closure); 107 break; 108 109 case flat_profiler: 110 FlatProfiler::oops_do(&mark_and_push_closure); 111 break; 112 113 case management: 114 Management::oops_do(&mark_and_push_closure); 115 break; 116 117 case jvmti: 118 JvmtiExport::oops_do(&mark_and_push_closure); 119 break; 120 121 case system_dictionary: 122 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); 123 ClassLoaderDataGraph::always_strong_oops_do(&mark_and_push_closure, &follow_klass_closure, true); 124 break; 125 126 case code_cache: 127 // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. 128 //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(&mark_and_push_closure)); 129 break; 130 131 default: 132 fatal("Unknown root type"); 133 } 134 135 // Do the real work 136 cm->follow_marking_stacks(); 137 } 138 139 140 // 141 // RefProcTaskProxy 142 // | 103 break; 104 105 case object_synchronizer: 106 ObjectSynchronizer::oops_do(&mark_and_push_closure); 107 break; 108 109 case flat_profiler: 110 FlatProfiler::oops_do(&mark_and_push_closure); 111 break; 112 113 case management: 114 Management::oops_do(&mark_and_push_closure); 115 break; 116 117 case jvmti: 118 JvmtiExport::oops_do(&mark_and_push_closure); 119 break; 120 121 case system_dictionary: 122 SystemDictionary::always_strong_oops_do(&mark_and_push_closure); 123 break; 124 125 case class_loader_data: 126 ClassLoaderDataGraph::always_strong_oops_do(&mark_and_push_closure, &follow_klass_closure, true); 127 break; 128 129 case code_cache: 130 // Do not treat nmethods as strong roots for mark/sweep, since we can unload them. 131 //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(&mark_and_push_closure)); 132 break; 133 134 default: 135 fatal("Unknown root type"); 136 } 137 138 // Do the real work 139 cm->follow_marking_stacks(); 140 } 141 142 143 // 144 // RefProcTaskProxy 145 // |