< prev index next >

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

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


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




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


< prev index next >