hotspot/src/share/vm/gc/g1/heapRegionManager.cpp
changeset 32589 f86fb16fcab0
parent 32390 b0f6868d46ee
child 33105 294e48b4f704
equal deleted inserted replaced
32588:f41486a59ab0 32589:f86fb16fcab0
   424 
   424 
   425   while ((removed < num_regions_to_remove) &&
   425   while ((removed < num_regions_to_remove) &&
   426       (num_last_found = find_empty_from_idx_reverse(cur, &idx_last_found)) > 0) {
   426       (num_last_found = find_empty_from_idx_reverse(cur, &idx_last_found)) > 0) {
   427     uint to_remove = MIN2(num_regions_to_remove - removed, num_last_found);
   427     uint to_remove = MIN2(num_regions_to_remove - removed, num_last_found);
   428 
   428 
   429     uncommit_regions(idx_last_found + num_last_found - to_remove, to_remove);
   429     shrink_at(idx_last_found + num_last_found - to_remove, to_remove);
   430 
   430 
   431     cur = idx_last_found;
   431     cur = idx_last_found;
   432     removed += to_remove;
   432     removed += to_remove;
   433   }
   433   }
   434 
   434 
   435   verify_optional();
   435   verify_optional();
   436 
   436 
   437   return removed;
   437   return removed;
       
   438 }
       
   439 
       
   440 void HeapRegionManager::shrink_at(uint index, size_t num_regions) {
       
   441 #ifdef ASSERT
       
   442   for (uint i = index; i < (index + num_regions); i++) {
       
   443     assert(is_available(i), err_msg("Expected available region at index %u", i));
       
   444     assert(at(i)->is_empty(), err_msg("Expected empty region at index %u", i));
       
   445     assert(at(i)->is_free(), err_msg("Expected free region at index %u", i));
       
   446   }
       
   447 #endif
       
   448   uncommit_regions(index, num_regions);
   438 }
   449 }
   439 
   450 
   440 uint HeapRegionManager::find_empty_from_idx_reverse(uint start_idx, uint* res_idx) const {
   451 uint HeapRegionManager::find_empty_from_idx_reverse(uint start_idx, uint* res_idx) const {
   441   guarantee(start_idx < _allocated_heapregions_length, "checking");
   452   guarantee(start_idx < _allocated_heapregions_length, "checking");
   442   guarantee(res_idx != NULL, "checking");
   453   guarantee(res_idx != NULL, "checking");