GenShen: Fix inconsistencies in generational Shenandoah behavior

XMLWordPrintable

    • gc
    • b16

      Several issues were detected during rr playback of a recent assertion failure:

      1. The balancing of generations that happens at the end of free set rebuild is redundant with the actions taken by ShenandoahGenerationalHeap::balance_generations(). This sometimes results in performing these actions twice, resulting in an unexpected imbalance of generation sizes and a generation size assertion error.

      2. The convention within ShennadoahFreeSet's ShenandoahRegionPartition is to use rightmost equal to -1 and leftmost equal to max to indicate an empty partition. At the end of ShenandoahFreeSet::find_regions_with_alloc_capacity(), we were accidentally violating this convention by using righmost equal to 0 for empty.

      3. At the end of ShenandoahFreeSet::reserve_regions(), we log failure to reserve intended amounts. But the test for when to log this failure is wrong. We were testing for capacity rather than availability within the relevant partitions

            Assignee:
            Kelvin Nilsen
            Reporter:
            Kelvin Nilsen
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: