RFR: 8150676: Use BufferNode index

Kim Barrett kim.barrett at oracle.com
Wed Mar 2 04:00:50 UTC 2016

> On Mar 1, 2016, at 9:56 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
> Please review this change to PtrQueue and its derivatives to maintain
> the index in BufferNode where needed.  This allowed the removal of
> code to fill inactive leading portions of buffers with NULL and to
> remove code to skip over NULL entries.
> Removed unused DirtyCardQueueSet::apply_closure_to_all_completed_buffers, 
> rather than fixing it's BufferNode manipulation.
> Further changed SATBMarkQueue::filter to use two-fingered compaction,
> which may further reduce the number of writes to the buffer during
> filtering.  For example, using specjbb2015, with over 2.5M buffers
> processed, the number of writes using the new two-fingered compaction
> (12M) was a factor of 50 fewer than needed by the (non-NULLing)
> sliding algorithm (60M), and a factor of 250 fewer than the original
> sliding algorithm (330M).

Oops, the relative factors are correct, but the values for the sliding write counts
are wrong.  Should be 12M (two-fingered), 600M (new slide) and 3300M (old slide).

>  On average, filtering a buffer removed
> about 75% of the entries in that test.
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8150676
> Webrev:
> http://cr.openjdk.java.net/~kbarrett/8150676/webrev.00
> Testing:
> Aurora ad-hoc defaults + GC nightly + Runtime nightly

More information about the hotspot-gc-dev mailing list