179 180 static bool steal(int queue_num, int* seed, oop& t) { 181 return stack_array()->steal(queue_num, seed, t); 182 } 183 184 static bool steal_objarray(int queue_num, int* seed, ObjArrayTask& t) { 185 return _objarray_queues->steal(queue_num, seed, t); 186 } 187 188 static bool steal(int queue_num, int* seed, size_t& region) { 189 return region_array()->steal(queue_num, seed, region); 190 } 191 192 // Process tasks remaining on any marking stack 193 void follow_marking_stacks(); 194 inline bool marking_stacks_empty() const; 195 196 // Process tasks remaining on any stack 197 void drain_region_stacks(); 198 199 }; 200 201 inline ParCompactionManager* ParCompactionManager::manager_array(int index) { 202 assert(_manager_array != NULL, "access of NULL manager_array"); 203 assert(index >= 0 && index <= (int)ParallelGCThreads, 204 "out of range manager_array access"); 205 return _manager_array[index]; 206 } 207 208 bool ParCompactionManager::marking_stacks_empty() const { 209 return _marking_stack.is_empty() && _objarray_stack.is_empty(); 210 } 211 212 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_HPP | 179 180 static bool steal(int queue_num, int* seed, oop& t) { 181 return stack_array()->steal(queue_num, seed, t); 182 } 183 184 static bool steal_objarray(int queue_num, int* seed, ObjArrayTask& t) { 185 return _objarray_queues->steal(queue_num, seed, t); 186 } 187 188 static bool steal(int queue_num, int* seed, size_t& region) { 189 return region_array()->steal(queue_num, seed, region); 190 } 191 192 // Process tasks remaining on any marking stack 193 void follow_marking_stacks(); 194 inline bool marking_stacks_empty() const; 195 196 // Process tasks remaining on any stack 197 void drain_region_stacks(); 198 199 void follow_contents(oop obj); 200 void follow_contents(objArrayOop array, int index); 201 202 void update_contents(oop obj); 203 }; 204 205 inline ParCompactionManager* ParCompactionManager::manager_array(int index) { 206 assert(_manager_array != NULL, "access of NULL manager_array"); 207 assert(index >= 0 && index <= (int)ParallelGCThreads, 208 "out of range manager_array access"); 209 return _manager_array[index]; 210 } 211 212 bool ParCompactionManager::marking_stacks_empty() const { 213 return _marking_stack.is_empty() && _objarray_stack.is_empty(); 214 } 215 216 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_HPP |