< prev index next >

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

Print this page
rev 7171 : 8060025: Object copy time regressions after JDK-8031323 and JDK-8057536
Summary: Evaluate and improve object copy time by micro-optimizations and splitting out slow and fast paths aggressively.
Reviewed-by: kbarrett, mgerdin, jmasa
Contributed-by: Tony Printezis <tprintezis@twitter.com>, Thomas Schatzl <thomas.schatzl@oracle.com>
rev 7172 : imported patch is_humongous_continues_humongous
rev 7178 : 8067655: Clean up G1 remembered set oop iteration
Summary: Pass on the static type G1ParPushHeapRSClosure to allow oop_iterate devirtualization
Reviewed-by: jmasa, kbarrett


4749       assert(pss.queue_is_empty(), "should be empty");
4750 
4751       // Close the inner scope so that the ResourceMark and HandleMark
4752       // destructors are executed here and are included as part of the
4753       // "GC Worker Time".
4754     }
4755 
4756     double end_time_ms = os::elapsedTime() * 1000.0;
4757     _g1h->g1_policy()->phase_times()->record_gc_worker_end_time(worker_id, end_time_ms);
4758   }
4759 };
4760 
4761 // *** Common G1 Evacuation Stuff
4762 
4763 // This method is run in a GC worker.
4764 
4765 void
4766 G1CollectedHeap::
4767 g1_process_roots(OopClosure* scan_non_heap_roots,
4768                  OopClosure* scan_non_heap_weak_roots,
4769                  OopsInHeapRegionClosure* scan_rs,
4770                  CLDClosure* scan_strong_clds,
4771                  CLDClosure* scan_weak_clds,
4772                  CodeBlobClosure* scan_strong_code,
4773                  uint worker_i) {
4774 
4775   // First scan the shared roots.
4776   double ext_roots_start = os::elapsedTime();
4777   double closure_app_time_sec = 0.0;
4778 
4779   bool during_im = _g1h->g1_policy()->during_initial_mark_pause();
4780   bool trace_metadata = during_im && ClassUnloadingWithConcurrentMark;
4781 
4782   BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots);
4783   BufferingOopClosure buf_scan_non_heap_weak_roots(scan_non_heap_weak_roots);
4784 
4785   process_roots(false, // no scoping; this is parallel code
4786                 SharedHeap::SO_None,
4787                 &buf_scan_non_heap_roots,
4788                 &buf_scan_non_heap_weak_roots,
4789                 scan_strong_clds,




4749       assert(pss.queue_is_empty(), "should be empty");
4750 
4751       // Close the inner scope so that the ResourceMark and HandleMark
4752       // destructors are executed here and are included as part of the
4753       // "GC Worker Time".
4754     }
4755 
4756     double end_time_ms = os::elapsedTime() * 1000.0;
4757     _g1h->g1_policy()->phase_times()->record_gc_worker_end_time(worker_id, end_time_ms);
4758   }
4759 };
4760 
4761 // *** Common G1 Evacuation Stuff
4762 
4763 // This method is run in a GC worker.
4764 
4765 void
4766 G1CollectedHeap::
4767 g1_process_roots(OopClosure* scan_non_heap_roots,
4768                  OopClosure* scan_non_heap_weak_roots,
4769                  G1ParPushHeapRSClosure* scan_rs,
4770                  CLDClosure* scan_strong_clds,
4771                  CLDClosure* scan_weak_clds,
4772                  CodeBlobClosure* scan_strong_code,
4773                  uint worker_i) {
4774 
4775   // First scan the shared roots.
4776   double ext_roots_start = os::elapsedTime();
4777   double closure_app_time_sec = 0.0;
4778 
4779   bool during_im = _g1h->g1_policy()->during_initial_mark_pause();
4780   bool trace_metadata = during_im && ClassUnloadingWithConcurrentMark;
4781 
4782   BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots);
4783   BufferingOopClosure buf_scan_non_heap_weak_roots(scan_non_heap_weak_roots);
4784 
4785   process_roots(false, // no scoping; this is parallel code
4786                 SharedHeap::SO_None,
4787                 &buf_scan_non_heap_roots,
4788                 &buf_scan_non_heap_weak_roots,
4789                 scan_strong_clds,


< prev index next >