< 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
rev 7855 : [mq]: 8027962-bengt-suggestions

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -101,11 +101,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 +256,24 @@
                      ScanningOption so,
                      OopClosure* strong_roots,
                      OopClosure* weak_roots,
                      CLDClosure* strong_cld_closure,
                      CLDClosure* weak_cld_closure,
-                     CodeBlobClosure* code_roots);
+                     CodeBlobClosure* code_roots,
+                     PhaseTimeData* phase_durations = NULL);
   void process_all_roots(bool activate_scope,
                          ScanningOption so,
                          OopClosure* roots,
                          CLDClosure* cld_closure,
-                         CodeBlobClosure* code_roots);
+                         CodeBlobClosure* code_roots,
+                         PhaseTimeData* phase_durations = NULL);
   void process_strong_roots(bool activate_scope,
                             ScanningOption so,
                             OopClosure* roots,
                             CLDClosure* cld_closure,
-                            CodeBlobClosure* code_roots);
+                            CodeBlobClosure* code_roots,
+                            PhaseTimeData* phase_durations = NULL);
 
 
   // Apply "root_closure" to the JNI weak roots..
   void process_weak_roots(OopClosure* root_closure);
 
< prev index next >