117 int max_completed_queue, 118 Mutex* lock, 119 DirtyCardQueueSet* fl_owner, 120 bool init_free_ids = false); 121 122 // The number of parallel ids that can be claimed to allow collector or 123 // mutator threads to do card-processing work. 124 static uint num_par_ids(); 125 126 static void handle_zero_index_for_thread(JavaThread* t); 127 128 // If there exists some completed buffer, pop it, then apply the 129 // specified closure to all its elements, nulling out those elements 130 // processed. If all elements are processed, returns "true". If no 131 // completed buffers exist, returns false. If a completed buffer exists, 132 // but is only partially completed before a "yield" happens, the 133 // partially completed buffer (with its processed elements set to NULL) 134 // is returned to the completed buffer set, and this call returns false. 135 bool apply_closure_to_completed_buffer(CardTableEntryClosure* cl, 136 uint worker_i, 137 int stop_at, 138 bool during_pause); 139 140 BufferNode* get_completed_buffer(int stop_at); 141 142 // Applies the current closure to all completed buffers, 143 // non-consumptively. 144 void apply_closure_to_all_completed_buffers(CardTableEntryClosure* cl); 145 146 void reset_for_par_iteration() { _cur_par_buffer_node = _completed_buffers_head; } 147 // Applies the current closure to all completed buffers, non-consumptively. 148 // Parallel version. 149 void par_apply_closure_to_all_completed_buffers(CardTableEntryClosure* cl); 150 151 DirtyCardQueue* shared_dirty_card_queue() { 152 return &_shared_dirty_card_queue; 153 } 154 155 // Deallocate any completed log buffers 156 void clear(); 157 158 // If a full collection is happening, reset partial logs, and ignore 159 // completed ones: the full collection will make them all irrelevant. 160 void abandon_logs(); | 117 int max_completed_queue, 118 Mutex* lock, 119 DirtyCardQueueSet* fl_owner, 120 bool init_free_ids = false); 121 122 // The number of parallel ids that can be claimed to allow collector or 123 // mutator threads to do card-processing work. 124 static uint num_par_ids(); 125 126 static void handle_zero_index_for_thread(JavaThread* t); 127 128 // If there exists some completed buffer, pop it, then apply the 129 // specified closure to all its elements, nulling out those elements 130 // processed. If all elements are processed, returns "true". If no 131 // completed buffers exist, returns false. If a completed buffer exists, 132 // but is only partially completed before a "yield" happens, the 133 // partially completed buffer (with its processed elements set to NULL) 134 // is returned to the completed buffer set, and this call returns false. 135 bool apply_closure_to_completed_buffer(CardTableEntryClosure* cl, 136 uint worker_i, 137 size_t stop_at, 138 bool during_pause); 139 140 BufferNode* get_completed_buffer(size_t stop_at); 141 142 // Applies the current closure to all completed buffers, 143 // non-consumptively. 144 void apply_closure_to_all_completed_buffers(CardTableEntryClosure* cl); 145 146 void reset_for_par_iteration() { _cur_par_buffer_node = _completed_buffers_head; } 147 // Applies the current closure to all completed buffers, non-consumptively. 148 // Parallel version. 149 void par_apply_closure_to_all_completed_buffers(CardTableEntryClosure* cl); 150 151 DirtyCardQueue* shared_dirty_card_queue() { 152 return &_shared_dirty_card_queue; 153 } 154 155 // Deallocate any completed log buffers 156 void clear(); 157 158 // If a full collection is happening, reset partial logs, and ignore 159 // completed ones: the full collection will make them all irrelevant. 160 void abandon_logs(); |