RFR: New evacuation-locking protocol
Aleksey Shipilev
shade at redhat.com
Tue Jun 23 10:55:10 UTC 2020
On 6/23/20 11:40 AM, Roman Kennke wrote:
> 1. Prune the 'old' evac-handler:
> http://cr.openjdk.java.net/~rkennke/evac-locking/webrev-prune-oom-handler.00/
*) Indenting change here:
shenandoahThreadLocalData.hpp:
- _satb_mark_queue(&ShenandoahBarrierSet::satb_mark_queue_set()),
+ _satb_mark_queue(&ShenandoahBarrierSet::satb_mark_queue_set()),
> 2. Implementation of the new evac-locking:
> http://cr.openjdk.java.net/~rkennke/evac-locking/webrev-evac-locking.00/
*) We should probably transplant the protocol rationale comments to new files...
*) This docs are now invalid:
shenandoahForwarding.hpp:
55 /* Tries to atomically update forwardee in $holder object to $update.
56 * Assumes $holder points at itself.
57 * Asserts $holder is in from-space.
58 * Asserts $update is in to-space.
59 *
60 * Returns the new object 'update' upon success, or
61 * the new forwardee that a competing thread installed.
62 */
63 static inline void update_forwardee(oop obj, oop update);
*) Removed newline:
shenandoahHeap.cpp:
@@ -2013,7 +2018,6 @@
collection_set()->clear_current_index();
}
-
op_stw_evac();
if (cancelled_gc()) {
op_degenerated_fail();
*) I don't think explicit initialization of _evac_failed is needed here:
shenandoahHeap.cpp:
@@ -495,7 +498,9 @@
_bitmap_region_special(false),
_aux_bitmap_region_special(false),
_liveness_cache(NULL),
- _collection_set(NULL)
+ _collection_set(NULL),
+ _evac_locking_bitmap(NULL),
+ _evac_failed()
{
_heap = this;
*) Indenting is a bit off:
+ experimental(uintx, ShenandoahEvacLockGranularity, 0, \
+ "How coarse to make evac-locking. Default 0 means " \
+ "per-HeapWord-locking, higher value make locking coarser " \
+ "in 2-exponent steps, e.g. one lock per 2^N heap words.") \
+ \
*) This is just (1 + ShenandoahEvacLockGranularity) * LogHeapWordSize?
_shifter(LogHeapWordSize + ShenandoahEvacLockGranularity * LogHeapWordSize)
--
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list