68 G1RP_PS_NumElements 69 }; 70 71 void worker_has_discovered_all_strong_classes(); 72 void wait_until_all_strong_classes_discovered(); 73 74 void process_java_roots(OopClosure* scan_non_heap_roots, 75 CLDClosure* thread_stack_clds, 76 CLDClosure* scan_strong_clds, 77 CLDClosure* scan_weak_clds, 78 CodeBlobClosure* scan_strong_code, 79 G1GCPhaseTimes* phase_times, 80 uint worker_i); 81 82 void process_vm_roots(OopClosure* scan_non_heap_roots, 83 OopClosure* scan_non_heap_weak_roots, 84 G1GCPhaseTimes* phase_times, 85 uint worker_i); 86 87 public: 88 G1RootProcessor(G1CollectedHeap* g1h); 89 90 // Apply closures to the strongly and weakly reachable roots in the system 91 // in a single pass. 92 // Record and report timing measurements for sub phases using the worker_i 93 void evacuate_roots(OopClosure* scan_non_heap_roots, 94 OopClosure* scan_non_heap_weak_roots, 95 CLDClosure* scan_strong_clds, 96 CLDClosure* scan_weak_clds, 97 bool trace_metadata, 98 uint worker_i); 99 100 // Apply oops, clds and blobs to all strongly reachable roots in the system 101 void process_strong_roots(OopClosure* oops, 102 CLDClosure* clds, 103 CodeBlobClosure* blobs); 104 105 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system 106 void process_all_roots(OopClosure* oops, 107 CLDClosure* clds, 108 CodeBlobClosure* blobs); 109 110 // Apply scan_rs to all locations in the union of the remembered sets for all 111 // regions in the collection set 112 // (having done "set_region" to indicate the region in which the root resides), 113 void scan_remembered_sets(G1ParPushHeapRSClosure* scan_rs, 114 OopClosure* scan_non_heap_weak_roots, 115 uint worker_i); 116 117 // Inform the root processor about the number of worker threads 118 void set_num_workers(uint active_workers); 119 }; 120 121 #endif // SHARE_VM_GC_G1_G1ROOTPROCESSOR_HPP | 68 G1RP_PS_NumElements 69 }; 70 71 void worker_has_discovered_all_strong_classes(); 72 void wait_until_all_strong_classes_discovered(); 73 74 void process_java_roots(OopClosure* scan_non_heap_roots, 75 CLDClosure* thread_stack_clds, 76 CLDClosure* scan_strong_clds, 77 CLDClosure* scan_weak_clds, 78 CodeBlobClosure* scan_strong_code, 79 G1GCPhaseTimes* phase_times, 80 uint worker_i); 81 82 void process_vm_roots(OopClosure* scan_non_heap_roots, 83 OopClosure* scan_non_heap_weak_roots, 84 G1GCPhaseTimes* phase_times, 85 uint worker_i); 86 87 public: 88 G1RootProcessor(G1CollectedHeap* g1h, uint n_workers); 89 90 // Apply closures to the strongly and weakly reachable roots in the system 91 // in a single pass. 92 // Record and report timing measurements for sub phases using the worker_i 93 void evacuate_roots(OopClosure* scan_non_heap_roots, 94 OopClosure* scan_non_heap_weak_roots, 95 CLDClosure* scan_strong_clds, 96 CLDClosure* scan_weak_clds, 97 bool trace_metadata, 98 uint worker_i); 99 100 // Apply oops, clds and blobs to all strongly reachable roots in the system 101 void process_strong_roots(OopClosure* oops, 102 CLDClosure* clds, 103 CodeBlobClosure* blobs); 104 105 // Apply oops, clds and blobs to strongly and weakly reachable roots in the system 106 void process_all_roots(OopClosure* oops, 107 CLDClosure* clds, 108 CodeBlobClosure* blobs); 109 110 // Apply scan_rs to all locations in the union of the remembered sets for all 111 // regions in the collection set 112 // (having done "set_region" to indicate the region in which the root resides), 113 void scan_remembered_sets(G1ParPushHeapRSClosure* scan_rs, 114 OopClosure* scan_non_heap_weak_roots, 115 uint worker_i); 116 117 // Inform SubTaskDone about the number of worker threads. 118 void set_num_workers(uint active_workers); 119 120 // Number of worker threads used by the root processor. 121 uint n_workers() const; 122 }; 123 124 #endif // SHARE_VM_GC_G1_G1ROOTPROCESSOR_HPP |