< prev index next >

src/share/vm/memory/sharedHeap.hpp

Print this page
rev 7854 : imported patch 8027962-per-phase-timing-measurements-for-strong-roots-processing

@@ -44,10 +44,11 @@
 class SubTasksDone;
 class WorkGang;
 class FlexibleWorkGang;
 class CollectorPolicy;
 class KlassClosure;
+class GCPhaseTimeTracker;
 
 // Note on use of FlexibleWorkGang's for GC.
 // There are three places where task completion is determined.
 // In
 //    1) ParallelTaskTerminator::offer_termination() where _n_threads

@@ -101,11 +102,29 @@
 class SharedHeap : public CollectedHeap {
   friend class VMStructs;
 
   friend class VM_GC_Operation;
   friend class VM_CGC_Operation;
+public:
+  // The set of potentially parallel tasks in root scanning.
+  enum SH_process_roots_tasks {
+    SH_PS_Threads_oops_do,
+    SH_PS_StringTable_oops_do,
+    SH_PS_Universe_oops_do,
+    SH_PS_JNIHandles_oops_do,
+    SH_PS_ObjectSynchronizer_oops_do,
+    SH_PS_FlatProfiler_oops_do,
+    SH_PS_Management_oops_do,
+    SH_PS_SystemDictionary_oops_do,
+    SH_PS_ClassLoaderDataGraph_oops_do,
+    SH_PS_jvmti_oops_do,
+    SH_PS_CodeCache_oops_do,
+    // Leave this one last.
+    SH_PS_NumElements
+  };
 
+  static const char* ext_roots_task_str(uint task);
 private:
   // For claiming strong_roots tasks.
   SubTasksDone* _process_strong_tasks;
 
 protected:

@@ -238,21 +257,24 @@
                      ScanningOption so,
                      OopClosure* strong_roots,
                      OopClosure* weak_roots,
                      CLDClosure* strong_cld_closure,
                      CLDClosure* weak_cld_closure,
-                     CodeBlobClosure* code_roots);
+                     CodeBlobClosure* code_roots,
+                     GCPhaseTimeTracker* phase_durations = NULL);
   void process_all_roots(bool activate_scope,
                          ScanningOption so,
                          OopClosure* roots,
                          CLDClosure* cld_closure,
-                         CodeBlobClosure* code_roots);
+                         CodeBlobClosure* code_roots,
+                         GCPhaseTimeTracker* phase_durations = NULL);
   void process_strong_roots(bool activate_scope,
                             ScanningOption so,
                             OopClosure* roots,
                             CLDClosure* cld_closure,
-                            CodeBlobClosure* code_roots);
+                            CodeBlobClosure* code_roots,
+                            GCPhaseTimeTracker* phase_durations = NULL);
 
 
   // Apply "root_closure" to the JNI weak roots..
   void process_weak_roots(OopClosure* root_closure);
 
< prev index next >