47 // worker thread call the process_roots methods.
48 class G1RootProcessor : public StackObj {
49 G1CollectedHeap* _g1h;
50 SubTasksDone _process_strong_tasks;
51 StrongRootsScope _srs;
52
53 // Used to implement the Thread work barrier.
54 Monitor _lock;
55 volatile jint _n_workers_discovered_strong_classes;
56
57 enum G1H_process_roots_tasks {
58 G1RP_PS_Universe_oops_do,
59 G1RP_PS_JNIHandles_oops_do,
60 G1RP_PS_ObjectSynchronizer_oops_do,
61 G1RP_PS_FlatProfiler_oops_do,
62 G1RP_PS_Management_oops_do,
63 G1RP_PS_SystemDictionary_oops_do,
64 G1RP_PS_ClassLoaderDataGraph_oops_do,
65 G1RP_PS_jvmti_oops_do,
66 G1RP_PS_CodeCache_oops_do,
67 G1RP_PS_filter_satb_buffers,
68 G1RP_PS_refProcessor_oops_do,
69 // Leave this one last.
70 G1RP_PS_NumElements
71 };
72
73 void worker_has_discovered_all_strong_classes();
74 void wait_until_all_strong_classes_discovered();
75
76 void process_all_roots(OopClosure* oops,
77 CLDClosure* clds,
78 CodeBlobClosure* blobs,
79 bool process_string_table);
80
81 void process_java_roots(G1RootClosures* closures,
82 G1GCPhaseTimes* phase_times,
83 uint worker_i);
84
85 void process_vm_roots(G1RootClosures* closures,
86 G1GCPhaseTimes* phase_times,
|
47 // worker thread call the process_roots methods.
48 class G1RootProcessor : public StackObj {
49 G1CollectedHeap* _g1h;
50 SubTasksDone _process_strong_tasks;
51 StrongRootsScope _srs;
52
53 // Used to implement the Thread work barrier.
54 Monitor _lock;
55 volatile jint _n_workers_discovered_strong_classes;
56
57 enum G1H_process_roots_tasks {
58 G1RP_PS_Universe_oops_do,
59 G1RP_PS_JNIHandles_oops_do,
60 G1RP_PS_ObjectSynchronizer_oops_do,
61 G1RP_PS_FlatProfiler_oops_do,
62 G1RP_PS_Management_oops_do,
63 G1RP_PS_SystemDictionary_oops_do,
64 G1RP_PS_ClassLoaderDataGraph_oops_do,
65 G1RP_PS_jvmti_oops_do,
66 G1RP_PS_CodeCache_oops_do,
67 G1RP_PS_aot_oops_do,
68 G1RP_PS_filter_satb_buffers,
69 G1RP_PS_refProcessor_oops_do,
70 // Leave this one last.
71 G1RP_PS_NumElements
72 };
73
74 void worker_has_discovered_all_strong_classes();
75 void wait_until_all_strong_classes_discovered();
76
77 void process_all_roots(OopClosure* oops,
78 CLDClosure* clds,
79 CodeBlobClosure* blobs,
80 bool process_string_table);
81
82 void process_java_roots(G1RootClosures* closures,
83 G1GCPhaseTimes* phase_times,
84 uint worker_i);
85
86 void process_vm_roots(G1RootClosures* closures,
87 G1GCPhaseTimes* phase_times,
|