--- old/src/share/vm/memory/sharedHeap.hpp 2015-02-17 09:48:41.129506163 +0100 +++ new/src/share/vm/memory/sharedHeap.hpp 2015-02-17 09:48:41.068504391 +0100 @@ -46,6 +46,7 @@ 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. @@ -103,7 +104,25 @@ 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; @@ -240,17 +259,20 @@ 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..