82 bool process_string_table);
83
84 void process_java_roots(G1RootClosures* closures,
85 G1GCPhaseTimes* phase_times,
86 uint worker_i);
87
88 void process_vm_roots(G1RootClosures* closures,
89 G1GCPhaseTimes* phase_times,
90 uint worker_i);
91
92 void process_string_table_roots(G1RootClosures* closures,
93 G1GCPhaseTimes* phase_times,
94 uint worker_i);
95
96 void process_code_cache_roots(CodeBlobClosure* code_closure,
97 G1GCPhaseTimes* phase_times,
98 uint worker_i);
99
100 public:
101 G1RootProcessor(G1CollectedHeap* g1h, uint n_workers);
102
103 // Apply correct closures from pss to the strongly and weakly reachable roots in the system
104 // in a single pass.
105 // Record and report timing measurements for sub phases using the worker_i
106 void evacuate_roots(G1ParScanThreadState* pss, uint worker_id);
107
108 // Apply oops, clds and blobs to all strongly reachable roots in the system
109 void process_strong_roots(OopClosure* oops,
110 CLDClosure* clds,
111 CodeBlobClosure* blobs);
112
113 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system
114 void process_all_roots(OopClosure* oops,
115 CLDClosure* clds,
116 CodeBlobClosure* blobs);
117
118 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system,
119 // the only thing different from process_all_roots is that we skip the string table
120 // to avoid keeping every string live when doing class unloading.
121 void process_all_roots_no_string_table(OopClosure* oops,
|
82 bool process_string_table);
83
84 void process_java_roots(G1RootClosures* closures,
85 G1GCPhaseTimes* phase_times,
86 uint worker_i);
87
88 void process_vm_roots(G1RootClosures* closures,
89 G1GCPhaseTimes* phase_times,
90 uint worker_i);
91
92 void process_string_table_roots(G1RootClosures* closures,
93 G1GCPhaseTimes* phase_times,
94 uint worker_i);
95
96 void process_code_cache_roots(CodeBlobClosure* code_closure,
97 G1GCPhaseTimes* phase_times,
98 uint worker_i);
99
100 public:
101 G1RootProcessor(G1CollectedHeap* g1h, uint n_workers);
102 ~G1RootProcessor();
103
104 // Apply correct closures from pss to the strongly and weakly reachable roots in the system
105 // in a single pass.
106 // Record and report timing measurements for sub phases using the worker_i
107 void evacuate_roots(G1ParScanThreadState* pss, uint worker_id);
108
109 // Apply oops, clds and blobs to all strongly reachable roots in the system
110 void process_strong_roots(OopClosure* oops,
111 CLDClosure* clds,
112 CodeBlobClosure* blobs);
113
114 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system
115 void process_all_roots(OopClosure* oops,
116 CLDClosure* clds,
117 CodeBlobClosure* blobs);
118
119 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system,
120 // the only thing different from process_all_roots is that we skip the string table
121 // to avoid keeping every string live when doing class unloading.
122 void process_all_roots_no_string_table(OopClosure* oops,
|