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

Refactor logged card refinement support in G1DirtyCardQueueSet

    Details

    • Type: Enhancement
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 14
    • Fix Version/s: 14
    • Component/s: hotspot
    • Subcomponent:
      gc
    • Resolved In Build:
      b14

      Description

      Concurrent and STW refinement are currently implemented via some shared code in G1DirtyCardQueueSet, with an externally provided closure for the STW case. As a result of this structure

      * STW refinement needs to go through the DCQS lock and deal with the head/tail/count in the DCQS list representation.

      * STW refinement performs a useless stop_at check.

      * The yield to safepoint request handling in the concurrent case is embedded in the closure and reported by the bool return value, making for some awkwardness and ambiguity in the shared helper code as to whether the current card was processed or not.

      * STW refinement needs to have a closure that returns bool but always returns a true value.

      Separating these two cases could make both cases simpler and easier to understand, and might provide some small performance benefit by avoiding a lock in STW refinement.

        Attachments

          Activity

            People

            • Assignee:
              kbarrett Kim Barrett
              Reporter:
              kbarrett Kim Barrett
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: