223 ScanningOption so, 224 bool only_strong_roots, 225 OopsInGenClosure* root_closure, 226 CLDClosure* cld_closure) { 227 MarkingCodeBlobClosure mark_code_closure(root_closure, !CodeBlobToOopClosure::FixRelocations); 228 CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure; 229 230 process_roots(scope, so, root_closure, cld_closure, weak_cld_closure, &mark_code_closure); 231 232 if (young_gen_as_roots && 233 _process_strong_tasks->try_claim_task(GCH_PS_younger_gens)) { 234 root_closure->set_generation(young_gen()); 235 young_gen()->oop_iterate(root_closure); 236 root_closure->reset_generation(); 237 } 238 239 _process_strong_tasks->all_tasks_completed(scope->n_threads()); 240 } 241 242 void CMSHeap::gc_prologue(bool full) { 243 always_do_update_barrier = false; 244 GenCollectedHeap::gc_prologue(full); 245 }; 246 247 void CMSHeap::gc_epilogue(bool full) { 248 GenCollectedHeap::gc_epilogue(full); 249 always_do_update_barrier = true; 250 }; 251 252 GrowableArray<GCMemoryManager*> CMSHeap::memory_managers() { 253 GrowableArray<GCMemoryManager*> memory_managers(2); 254 memory_managers.append(_young_manager); 255 memory_managers.append(_old_manager); 256 return memory_managers; 257 } 258 259 GrowableArray<MemoryPool*> CMSHeap::memory_pools() { 260 GrowableArray<MemoryPool*> memory_pools(3); 261 memory_pools.append(_eden_pool); 262 memory_pools.append(_survivor_pool); 263 memory_pools.append(_old_pool); 264 return memory_pools; 265 } | 223 ScanningOption so, 224 bool only_strong_roots, 225 OopsInGenClosure* root_closure, 226 CLDClosure* cld_closure) { 227 MarkingCodeBlobClosure mark_code_closure(root_closure, !CodeBlobToOopClosure::FixRelocations); 228 CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure; 229 230 process_roots(scope, so, root_closure, cld_closure, weak_cld_closure, &mark_code_closure); 231 232 if (young_gen_as_roots && 233 _process_strong_tasks->try_claim_task(GCH_PS_younger_gens)) { 234 root_closure->set_generation(young_gen()); 235 young_gen()->oop_iterate(root_closure); 236 root_closure->reset_generation(); 237 } 238 239 _process_strong_tasks->all_tasks_completed(scope->n_threads()); 240 } 241 242 void CMSHeap::gc_prologue(bool full) { 243 GenCollectedHeap::gc_prologue(full); 244 }; 245 246 void CMSHeap::gc_epilogue(bool full) { 247 GenCollectedHeap::gc_epilogue(full); 248 }; 249 250 GrowableArray<GCMemoryManager*> CMSHeap::memory_managers() { 251 GrowableArray<GCMemoryManager*> memory_managers(2); 252 memory_managers.append(_young_manager); 253 memory_managers.append(_old_manager); 254 return memory_managers; 255 } 256 257 GrowableArray<MemoryPool*> CMSHeap::memory_pools() { 258 GrowableArray<MemoryPool*> memory_pools(3); 259 memory_pools.append(_eden_pool); 260 memory_pools.append(_survivor_pool); 261 memory_pools.append(_old_pool); 262 return memory_pools; 263 } |