comparison src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp @ 20305:755930f931e3

8027959: Early reclamation of large objects in G1 Summary: Try to reclaim humongous objects at every young collection after doing a conservative estimate of its liveness. Reviewed-by: brutisso, mgerdin
author tschatzl
date Wed, 23 Jul 2014 09:03:32 +0200
parents 828056cf311f
children 1f1d373cd044
comparison
equal deleted inserted replaced
20304:a22acf6d7598 20305:755930f931e3
183 183
184 // Removes any entries shown by the given bitmaps to contain only dead 184 // Removes any entries shown by the given bitmaps to contain only dead
185 // objects. 185 // objects.
186 void scrub(CardTableModRefBS* ctbs, BitMap* region_bm, BitMap* card_bm); 186 void scrub(CardTableModRefBS* ctbs, BitMap* region_bm, BitMap* card_bm);
187 187
188 // Returns whether this remembered set (and all sub-sets) contain no entries.
189 bool is_empty() const;
190
188 size_t occupied() const; 191 size_t occupied() const;
189 size_t occ_fine() const; 192 size_t occ_fine() const;
190 size_t occ_coarse() const; 193 size_t occ_coarse() const;
191 size_t occ_sparse() const; 194 size_t occ_sparse() const;
192 195
265 static uint num_par_rem_sets(); 268 static uint num_par_rem_sets();
266 static void setup_remset_size(); 269 static void setup_remset_size();
267 270
268 HeapRegion* hr() const { 271 HeapRegion* hr() const {
269 return _other_regions.hr(); 272 return _other_regions.hr();
273 }
274
275 bool is_empty() const {
276 return (strong_code_roots_list_length() == 0) && _other_regions.is_empty();
270 } 277 }
271 278
272 size_t occupied() { 279 size_t occupied() {
273 MutexLockerEx x(&_m, Mutex::_no_safepoint_check_flag); 280 MutexLockerEx x(&_m, Mutex::_no_safepoint_check_flag);
274 return occupied_locked(); 281 return occupied_locked();
373 // Applies blk->do_code_blob() to each of the entries in 380 // Applies blk->do_code_blob() to each of the entries in
374 // the strong code roots list 381 // the strong code roots list
375 void strong_code_roots_do(CodeBlobClosure* blk) const; 382 void strong_code_roots_do(CodeBlobClosure* blk) const;
376 383
377 // Returns the number of elements in the strong code roots list 384 // Returns the number of elements in the strong code roots list
378 size_t strong_code_roots_list_length() { 385 size_t strong_code_roots_list_length() const {
379 return _code_roots.length(); 386 return _code_roots.length();
380 } 387 }
381 388
382 // Returns true if the strong code roots contains the given 389 // Returns true if the strong code roots contains the given
383 // nmethod. 390 // nmethod.