RFR: Fix budgeting assertion [v2]

Kelvin Nilsen kdnilsen at openjdk.org
Tue Aug 9 16:19:39 UTC 2022


> An assertion failure revealed problems with evacuation budgeting computations.  Three changes are reflected in this pull request:
> 
> 1. Memory set aside for the promotion reserve was not excluded from the allocation supplement
> 2. When the old evacuation reserve is larger than the memory consumed by old evacuation collection set, we loan the excess memory to allocation supplement to make sure this memory is not consumed by promotions.  The number of regions set aside from this reserve for the allocation supplement must be rounded down from the total excess memory.  (Before this patch, it was rounded up.)
> 3. The assertion test that was failing needed a <= comparison instead of a < comparison.

Kelvin Nilsen has updated the pull request incrementally with three additional commits since the last revision:

 - Remove instrumentation
 - Fix choose_collection_set to use region->index after quicksort
   
   After region data is sorted in garbage order, index within the region
   data array no longer matches the region->index().  Use the
   region->index() to test whether the region was pre-selected rather than
   using the index within the region data array.  Very confusing that this
   code ever worked.  Perhaps this bug was introduced by some sort of merge
   conflict.
 - Assure that aged young regions are not promoted if not pre-selected
   
   In the case that an aged young region is not pre-selected, it should not
   be included in the collection set because there is not enough room in
   old-gen to hold its promoted contents.

-------------

Changes:
  - all: https://git.openjdk.org/shenandoah/pull/156/files
  - new: https://git.openjdk.org/shenandoah/pull/156/files/e727640c..7d256dba

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=shenandoah&pr=156&range=01
 - incr: https://webrevs.openjdk.org/?repo=shenandoah&pr=156&range=00-01

  Stats: 43 lines in 1 file changed: 27 ins; 0 del; 16 mod
  Patch: https://git.openjdk.org/shenandoah/pull/156.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah pull/156/head:pull/156

PR: https://git.openjdk.org/shenandoah/pull/156


More information about the shenandoah-dev mailing list