< prev index next >

src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

Print this page
rev 7555 : [mq]: propagate_scanrs_closure


4592       assert(pss.queue_is_empty(), "should be empty");
4593 
4594       // Close the inner scope so that the ResourceMark and HandleMark
4595       // destructors are executed here and are included as part of the
4596       // "GC Worker Time".
4597     }
4598 
4599     double end_time_ms = os::elapsedTime() * 1000.0;
4600     _g1h->g1_policy()->phase_times()->record_gc_worker_end_time(worker_id, end_time_ms);
4601   }
4602 };
4603 
4604 // *** Common G1 Evacuation Stuff
4605 
4606 // This method is run in a GC worker.
4607 
4608 void
4609 G1CollectedHeap::
4610 g1_process_roots(OopClosure* scan_non_heap_roots,
4611                  OopClosure* scan_non_heap_weak_roots,
4612                  OopsInHeapRegionClosure* scan_rs,
4613                  CLDClosure* scan_strong_clds,
4614                  CLDClosure* scan_weak_clds,
4615                  CodeBlobClosure* scan_strong_code,
4616                  uint worker_i) {
4617 
4618   // First scan the shared roots.
4619   double ext_roots_start = os::elapsedTime();
4620   double closure_app_time_sec = 0.0;
4621 
4622   bool during_im = _g1h->g1_policy()->during_initial_mark_pause();
4623   bool trace_metadata = during_im && ClassUnloadingWithConcurrentMark;
4624 
4625   BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots);
4626   BufferingOopClosure buf_scan_non_heap_weak_roots(scan_non_heap_weak_roots);
4627 
4628   process_roots(false, // no scoping; this is parallel code
4629                 SharedHeap::SO_None,
4630                 &buf_scan_non_heap_roots,
4631                 &buf_scan_non_heap_weak_roots,
4632                 scan_strong_clds,




4592       assert(pss.queue_is_empty(), "should be empty");
4593 
4594       // Close the inner scope so that the ResourceMark and HandleMark
4595       // destructors are executed here and are included as part of the
4596       // "GC Worker Time".
4597     }
4598 
4599     double end_time_ms = os::elapsedTime() * 1000.0;
4600     _g1h->g1_policy()->phase_times()->record_gc_worker_end_time(worker_id, end_time_ms);
4601   }
4602 };
4603 
4604 // *** Common G1 Evacuation Stuff
4605 
4606 // This method is run in a GC worker.
4607 
4608 void
4609 G1CollectedHeap::
4610 g1_process_roots(OopClosure* scan_non_heap_roots,
4611                  OopClosure* scan_non_heap_weak_roots,
4612                  G1ParPushHeapRSClosure* scan_rs,
4613                  CLDClosure* scan_strong_clds,
4614                  CLDClosure* scan_weak_clds,
4615                  CodeBlobClosure* scan_strong_code,
4616                  uint worker_i) {
4617 
4618   // First scan the shared roots.
4619   double ext_roots_start = os::elapsedTime();
4620   double closure_app_time_sec = 0.0;
4621 
4622   bool during_im = _g1h->g1_policy()->during_initial_mark_pause();
4623   bool trace_metadata = during_im && ClassUnloadingWithConcurrentMark;
4624 
4625   BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots);
4626   BufferingOopClosure buf_scan_non_heap_weak_roots(scan_non_heap_weak_roots);
4627 
4628   process_roots(false, // no scoping; this is parallel code
4629                 SharedHeap::SO_None,
4630                 &buf_scan_non_heap_roots,
4631                 &buf_scan_non_heap_weak_roots,
4632                 scan_strong_clds,


< prev index next >