28 #include "gc/shared/strongRootsScope.hpp"
29 #include "memory/allocation.hpp"
30 #include "runtime/mutex.hpp"
31
32 class CLDClosure;
33 class CodeBlobClosure;
34 class G1CollectedHeap;
35 class G1GCPhaseTimes;
36 class G1ParPushHeapRSClosure;
37 class Monitor;
38 class OopClosure;
39 class SubTasksDone;
40
41 // Scoped object to assist in applying oop, CLD and code blob closures to
42 // root locations. Handles claiming of different root scanning tasks
43 // and takes care of global state for root scanning via a StrongRootsScope.
44 // In the parallel case there is a shared G1RootProcessor object where all
45 // worker thread call the process_roots methods.
46 class G1RootProcessor : public StackObj {
47 G1CollectedHeap* _g1h;
48 SubTasksDone* _process_strong_tasks;
49 StrongRootsScope _srs;
50
51 // Used to implement the Thread work barrier.
52 Monitor _lock;
53 volatile jint _n_workers_discovered_strong_classes;
54
55 enum G1H_process_roots_tasks {
56 G1RP_PS_Universe_oops_do,
57 G1RP_PS_JNIHandles_oops_do,
58 G1RP_PS_ObjectSynchronizer_oops_do,
59 G1RP_PS_FlatProfiler_oops_do,
60 G1RP_PS_Management_oops_do,
61 G1RP_PS_SystemDictionary_oops_do,
62 G1RP_PS_ClassLoaderDataGraph_oops_do,
63 G1RP_PS_jvmti_oops_do,
64 G1RP_PS_CodeCache_oops_do,
65 G1RP_PS_filter_satb_buffers,
66 G1RP_PS_refProcessor_oops_do,
67 // Leave this one last.
68 G1RP_PS_NumElements
|
28 #include "gc/shared/strongRootsScope.hpp"
29 #include "memory/allocation.hpp"
30 #include "runtime/mutex.hpp"
31
32 class CLDClosure;
33 class CodeBlobClosure;
34 class G1CollectedHeap;
35 class G1GCPhaseTimes;
36 class G1ParPushHeapRSClosure;
37 class Monitor;
38 class OopClosure;
39 class SubTasksDone;
40
41 // Scoped object to assist in applying oop, CLD and code blob closures to
42 // root locations. Handles claiming of different root scanning tasks
43 // and takes care of global state for root scanning via a StrongRootsScope.
44 // In the parallel case there is a shared G1RootProcessor object where all
45 // worker thread call the process_roots methods.
46 class G1RootProcessor : public StackObj {
47 G1CollectedHeap* _g1h;
48 SubTasksDone _process_strong_tasks;
49 StrongRootsScope _srs;
50
51 // Used to implement the Thread work barrier.
52 Monitor _lock;
53 volatile jint _n_workers_discovered_strong_classes;
54
55 enum G1H_process_roots_tasks {
56 G1RP_PS_Universe_oops_do,
57 G1RP_PS_JNIHandles_oops_do,
58 G1RP_PS_ObjectSynchronizer_oops_do,
59 G1RP_PS_FlatProfiler_oops_do,
60 G1RP_PS_Management_oops_do,
61 G1RP_PS_SystemDictionary_oops_do,
62 G1RP_PS_ClassLoaderDataGraph_oops_do,
63 G1RP_PS_jvmti_oops_do,
64 G1RP_PS_CodeCache_oops_do,
65 G1RP_PS_filter_satb_buffers,
66 G1RP_PS_refProcessor_oops_do,
67 // Leave this one last.
68 G1RP_PS_NumElements
|