< prev index next >

src/hotspot/share/gc/parallel/psYoungGen.cpp

Print this page
rev 56944 : imported patch 8233702-function-to-clamp-value-to-range


 283   }
 284 }
 285 
 286 
 287 bool PSYoungGen::resize_generation(size_t eden_size, size_t survivor_size) {
 288   const size_t alignment = virtual_space()->alignment();
 289   size_t orig_size = virtual_space()->committed_size();
 290   bool size_changed = false;
 291 
 292   // There used to be this guarantee there.
 293   // guarantee ((eden_size + 2*survivor_size)  <= _max_gen_size, "incorrect input arguments");
 294   // Code below forces this requirement.  In addition the desired eden
 295   // size and desired survivor sizes are desired goals and may
 296   // exceed the total generation size.
 297 
 298   assert(min_gen_size() <= orig_size && orig_size <= max_size(), "just checking");
 299 
 300   // Adjust new generation size
 301   const size_t eden_plus_survivors =
 302           align_up(eden_size + 2 * survivor_size, alignment);
 303   size_t desired_size = MAX2(MIN2(eden_plus_survivors, max_size()),
 304                              min_gen_size());
 305   assert(desired_size <= max_size(), "just checking");
 306 
 307   if (desired_size > orig_size) {
 308     // Grow the generation
 309     size_t change = desired_size - orig_size;
 310     assert(change % alignment == 0, "just checking");
 311     HeapWord* prev_high = (HeapWord*) virtual_space()->high();
 312     if (!virtual_space()->expand_by(change)) {
 313       return false; // Error if we fail to resize!
 314     }
 315     if (ZapUnusedHeapArea) {
 316       // Mangle newly committed space immediately because it
 317       // can be done here more simply that after the new
 318       // spaces have been computed.
 319       HeapWord* new_high = (HeapWord*) virtual_space()->high();
 320       MemRegion mangle_region(prev_high, new_high);
 321       SpaceMangler::mangle_region(mangle_region);
 322     }
 323     size_changed = true;
 324   } else if (desired_size < orig_size) {




 283   }
 284 }
 285 
 286 
 287 bool PSYoungGen::resize_generation(size_t eden_size, size_t survivor_size) {
 288   const size_t alignment = virtual_space()->alignment();
 289   size_t orig_size = virtual_space()->committed_size();
 290   bool size_changed = false;
 291 
 292   // There used to be this guarantee there.
 293   // guarantee ((eden_size + 2*survivor_size)  <= _max_gen_size, "incorrect input arguments");
 294   // Code below forces this requirement.  In addition the desired eden
 295   // size and desired survivor sizes are desired goals and may
 296   // exceed the total generation size.
 297 
 298   assert(min_gen_size() <= orig_size && orig_size <= max_size(), "just checking");
 299 
 300   // Adjust new generation size
 301   const size_t eden_plus_survivors =
 302           align_up(eden_size + 2 * survivor_size, alignment);
 303   size_t desired_size = clamp(eden_plus_survivors, min_gen_size(), max_size());

 304   assert(desired_size <= max_size(), "just checking");
 305 
 306   if (desired_size > orig_size) {
 307     // Grow the generation
 308     size_t change = desired_size - orig_size;
 309     assert(change % alignment == 0, "just checking");
 310     HeapWord* prev_high = (HeapWord*) virtual_space()->high();
 311     if (!virtual_space()->expand_by(change)) {
 312       return false; // Error if we fail to resize!
 313     }
 314     if (ZapUnusedHeapArea) {
 315       // Mangle newly committed space immediately because it
 316       // can be done here more simply that after the new
 317       // spaces have been computed.
 318       HeapWord* new_high = (HeapWord*) virtual_space()->high();
 319       MemRegion mangle_region(prev_high, new_high);
 320       SpaceMangler::mangle_region(mangle_region);
 321     }
 322     size_changed = true;
 323   } else if (desired_size < orig_size) {


< prev index next >