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 // Keep alive an object that was loaded with AS_NO_KEEPALIVE.
1174 virtual void keep_alive(oop obj);
1175
1176 // Iterate over heap regions, in address order, terminating the
1177 // iteration early if the "do_heap_region" method returns "true".
1178 void heap_region_iterate(HeapRegionClosure* blk) const;
1179
1180 // Return the region with the given index. It assumes the index is valid.
1181 inline HeapRegion* region_at(uint index) const;
1182 inline HeapRegion* region_at_or_null(uint index) const;
1183
1184 // Return the next region (by index) that is part of the same
1185 // humongous object that hr is part of.
1186 inline HeapRegion* next_region_in_humongous(HeapRegion* hr) const;
1187
1188 // Calculate the region index of the given address. Given address must be
1189 // within the heap.
1190 inline uint addr_to_region(HeapWord* addr) const;
1191
1192 inline HeapWord* bottom_addr_for_region(uint index) const;
|
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
1203 inline HeapWord* bottom_addr_for_region(uint index) const;
|