1150 MemRegion reserved_region() const { 1151 return _reserved; 1152 } 1153 1154 HeapWord* base() const { 1155 return _reserved.start(); 1156 } 1157 1158 bool is_in_reserved(const void* addr) const { 1159 return _reserved.contains(addr); 1160 } 1161 1162 G1HotCardCache* hot_card_cache() const { return _hot_card_cache; } 1163 1164 G1CardTable* card_table() const { 1165 return _card_table; 1166 } 1167 1168 // Iteration functions. 1169 1170 // Iterate over all objects, calling "cl.do_object" on each. 1171 virtual void object_iterate(ObjectClosure* cl); 1172 1173 virtual bool run_par_heap_inspect_task(KlassInfoTable* cit, 1174 BoolObjectClosure* filter, 1175 size_t* missed_count, 1176 size_t thread_num); 1177 1178 // Parallel iterate over all objects. 1179 virtual void object_iterate_parallel(ObjectClosure* cl, uint worker_id, HeapRegionClaimer* claimer); 1180 1181 // Parallel iterate over all objects, reture false if parallel not support. 1182 virtual bool object_iterate_try_parallel(AbstractGangTask *task, size_t par_thread_num); 1183 1184 // Keep alive an object that was loaded with AS_NO_KEEPALIVE. 1185 virtual void keep_alive(oop obj); 1186 1187 // Iterate over heap regions, in address order, terminating the 1188 // iteration early if the "do_heap_region" method returns "true". 1189 void heap_region_iterate(HeapRegionClosure* blk) const; 1190 1191 // Return the region with the given index. It assumes the index is valid. 1192 inline HeapRegion* region_at(uint index) const; 1193 inline HeapRegion* region_at_or_null(uint index) const; 1194 1195 // Return the next region (by index) that is part of the same 1196 // humongous object that hr is part of. 1197 inline HeapRegion* next_region_in_humongous(HeapRegion* hr) const; 1198 1199 // Calculate the region index of the given address. Given address must be 1200 // within the heap. 1201 inline uint addr_to_region(HeapWord* addr) const; 1202 | 1150 MemRegion reserved_region() const { 1151 return _reserved; 1152 } 1153 1154 HeapWord* base() const { 1155 return _reserved.start(); 1156 } 1157 1158 bool is_in_reserved(const void* addr) const { 1159 return _reserved.contains(addr); 1160 } 1161 1162 G1HotCardCache* hot_card_cache() const { return _hot_card_cache; } 1163 1164 G1CardTable* card_table() const { 1165 return _card_table; 1166 } 1167 1168 // Iteration functions. 1169 1170 void object_iterate_parallel(ObjectClosure* cl, uint worker_id, HeapRegionClaimer* claimer); 1171 1172 // Iterate over all objects, calling "cl.do_object" on each. 1173 virtual void object_iterate(ObjectClosure* cl); 1174 1175 virtual ParallelObjectIterator* parallel_object_iterator(uint thread_num); 1176 1177 // Keep alive an object that was loaded with AS_NO_KEEPALIVE. 1178 virtual void keep_alive(oop obj); 1179 1180 // Iterate over heap regions, in address order, terminating the 1181 // iteration early if the "do_heap_region" method returns "true". 1182 void heap_region_iterate(HeapRegionClosure* blk) const; 1183 1184 // Return the region with the given index. It assumes the index is valid. 1185 inline HeapRegion* region_at(uint index) const; 1186 inline HeapRegion* region_at_or_null(uint index) const; 1187 1188 // Return the next region (by index) that is part of the same 1189 // humongous object that hr is part of. 1190 inline HeapRegion* next_region_in_humongous(HeapRegion* hr) const; 1191 1192 // Calculate the region index of the given address. Given address must be 1193 // within the heap. 1194 inline uint addr_to_region(HeapWord* addr) const; 1195 |