Shenandoah: assert_bounds should be only called when boundaries have changed

XMLWordPrintable

    • gc
    • In Review
    • 26

      There three tests we added to ProblemLists are caused by this issue:

      ```
      gc/shenandoah/TestRetainObjects.java#no-tlab 8361099 generic-all
      gc/shenandoah/TestSieveObjects.java#no-tlab 8361099 generic-all
      gc/shenandoah/TestSieveObjects.java#no-tlab-genshen 8361099 generic-all
      ```

      The problem is assert_bounds is always called from function ShenandoahFreeSet::try_allocate_in, no matter the boundaries have changed or not after the allocation, this is a behavior change introduced by https://bugs.openjdk.org/browse/JDK-8365880, before which assert_bounds was only called after retiring a region.

      In the profiler data of test `gc/shenandoah/TestRetainObjects.java#no-tlab`, nearly 90% of CPU time is spent on assert_bounds from method `ShenandoahFreeSet::try_allocate_in`

      The issue can be fixed with https://bugs.openjdk.org/browse/JDK-8361099, but I feel it is different issue and the fix is simple so we should fixed it, since JDK-8361099 is a big change we may not backport to older JDK version.

            Assignee:
            Xiaolong Peng
            Reporter:
            Xiaolong Peng
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: