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

Simplify G1ConcurrentRefineThread activation

XMLWordPrintable

    • gc
    • b09

      JDK-8237143 changed G1ConcurrentRefineThread to use a semaphore and surrounding protocol for activation, rather than a Monitor. This was part of eliminating the DirtyCardQ_cbl_mon monitor, getting rid of a lock in the dirty card buffer handling.

      The resulting activation protocol is somewhat complicated because it needs to deal with two fairly different clients. One is the dirty card buffer handling from the write barrier, which may need to wake up the "primary" refinement thread. The other is wakeup of additional refinement threads.

      Both cases could be simplified by splitting the refinement thread class into two subclasses, one for the primary thread and one for the other threads. The other threads could go back to using monitor-based activation control. Only the primary thread needs to use atomic state and semaphores, and even there the protocol can be made simpler.

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

              Created:
              Updated:
              Resolved: