< prev index next >

src/hotspot/share/gc/serial/defNewGeneration.cpp

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


 375 
 376   size_t old_size = gch->old_gen()->capacity();
 377   size_t new_size_before = _virtual_space.committed_size();
 378   size_t min_new_size = initial_size();
 379   size_t max_new_size = reserved().byte_size();
 380   assert(min_new_size <= new_size_before &&
 381          new_size_before <= max_new_size,
 382          "just checking");
 383   // All space sizes must be multiples of Generation::GenGrain.
 384   size_t alignment = Generation::GenGrain;
 385 
 386   int threads_count = 0;
 387   size_t thread_increase_size = 0;
 388 
 389   size_t new_size_candidate = old_size / NewRatio;
 390   // Compute desired new generation size based on NewRatio and NewSizeThreadIncrease
 391   // and reverts to previous value if any overflow happens
 392   size_t desired_new_size = adjust_for_thread_increase(new_size_candidate, new_size_before, alignment);
 393 
 394   // Adjust new generation size
 395   desired_new_size = MAX2(MIN2(desired_new_size, max_new_size), min_new_size);
 396   assert(desired_new_size <= max_new_size, "just checking");
 397 
 398   bool changed = false;
 399   if (desired_new_size > new_size_before) {
 400     size_t change = desired_new_size - new_size_before;
 401     assert(change % alignment == 0, "just checking");
 402     if (expand(change)) {
 403        changed = true;
 404     }
 405     // If the heap failed to expand to the desired size,
 406     // "changed" will be false.  If the expansion failed
 407     // (and at this point it was expected to succeed),
 408     // ignore the failure (leaving "changed" as false).
 409   }
 410   if (desired_new_size < new_size_before && eden()->is_empty()) {
 411     // bail out of shrinking if objects in eden
 412     size_t change = new_size_before - desired_new_size;
 413     assert(change % alignment == 0, "just checking");
 414     _virtual_space.shrink_by(change);
 415     changed = true;




 375 
 376   size_t old_size = gch->old_gen()->capacity();
 377   size_t new_size_before = _virtual_space.committed_size();
 378   size_t min_new_size = initial_size();
 379   size_t max_new_size = reserved().byte_size();
 380   assert(min_new_size <= new_size_before &&
 381          new_size_before <= max_new_size,
 382          "just checking");
 383   // All space sizes must be multiples of Generation::GenGrain.
 384   size_t alignment = Generation::GenGrain;
 385 
 386   int threads_count = 0;
 387   size_t thread_increase_size = 0;
 388 
 389   size_t new_size_candidate = old_size / NewRatio;
 390   // Compute desired new generation size based on NewRatio and NewSizeThreadIncrease
 391   // and reverts to previous value if any overflow happens
 392   size_t desired_new_size = adjust_for_thread_increase(new_size_candidate, new_size_before, alignment);
 393 
 394   // Adjust new generation size
 395   desired_new_size = clamp(desired_new_size, min_new_size, max_new_size);
 396   assert(desired_new_size <= max_new_size, "just checking");
 397 
 398   bool changed = false;
 399   if (desired_new_size > new_size_before) {
 400     size_t change = desired_new_size - new_size_before;
 401     assert(change % alignment == 0, "just checking");
 402     if (expand(change)) {
 403        changed = true;
 404     }
 405     // If the heap failed to expand to the desired size,
 406     // "changed" will be false.  If the expansion failed
 407     // (and at this point it was expected to succeed),
 408     // ignore the failure (leaving "changed" as false).
 409   }
 410   if (desired_new_size < new_size_before && eden()->is_empty()) {
 411     // bail out of shrinking if objects in eden
 412     size_t change = new_size_before - desired_new_size;
 413     assert(change % alignment == 0, "just checking");
 414     _virtual_space.shrink_by(change);
 415     changed = true;


< prev index next >