Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8261284

Refactor MutableSpace

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • 17
    • hotspot
    • gc

      1. Provide linear CAS-based allocation for the fixed-bounds youngen spaces (from, to, and eden). This requires atomic operations on _top, but not _bottom or _end.

      2. Provides linear CAS-based allocation for the expandable oldgen. This requires atomic operations on _top and _end, but not _bottom.

      3. Provides NUMA interleaving support for oldgen.

      4. Provides a base class for NUMA-aware younggen allocation.

      5. Provides NUMA chunk allocation for the NUMA-aware younggen allocator.

      As a consequence of being used in all these places, MutableSpace has the union of the needed API, and it's implementation is made more complicated than it should be.

      For example, (1) and (2) mean we have conflicting requirements for _end. We want it to be an ordinary member, whose address can be provided for the places controlled by CollectedHeap::supports_inline_contig_alloc. But for the expandable oldgen there can be reads concurrent with a write.

      Another example is that the NUMA-aware derived class has to override nearly all of the base class, and in some cases (handling of _top) even fakes updates.

      cas_deallocate exists only to support the NUMA-aware younggen allocator, undoing a NUMA chunk allocation.

            Unassigned Unassigned
            kbarrett Kim Barrett
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: