RFR 8225483: Shenandoah: Enhance native access barrier
Roman Kennke
roman at kennke.org
Tue Jun 11 18:15:30 UTC 2019
BTW, not really. Returning NULL for unreachable oops is a prerequisite for concurrent cleaning. Concurrent evacuation&updating can be done with just the LRB.
However, you likely also need the C1 and C2 barriers.
Roman
Am 11. Juni 2019 14:18:33 MESZ schrieb Zhengyu Gu <zgu at redhat.com>:
>
>
>On 6/11/19 6:39 AM, Roman Kennke wrote:
>> It looks to me like it adds more work, while not reaping the benefit
>of
>> it, specifically the ability to clean some roots concurrently. I
>assume
>> this would come in follow-up?
>>
>Yes, this is a prerequisite of JDK-8225534
>(https://bugs.openjdk.java.net/browse/JDK-8225534)
>
>Thanks,
>
>-Zhengyu
>
>> Roman
>>
>>
>> Am 11. Juni 2019 01:14:48 MESZ schrieb Zhengyu Gu <zgu at redhat.com>:
>>
>>
>>
>> On 6/10/19 4:32 AM, Aleksey Shipilev wrote:
>>
>> On 6/10/19 2:06 AM, Zhengyu Gu wrote:
>>
>> Please review this enhancement of native access barrier,
>in
>> preparation for concurrent root processing.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8225483
>> Webrev:
>http://cr.openjdk.java.net/~zgu/JDK-8225483/webrev.00/
>>
>>
>> *) It looks to me the webrev itself and the patch in it
>> disagree. For example, webrev says the
>> entire oop_store_not_in_heap is #ifdef ASSERT-ed, but the
>patch
>> has the ASSERT block internally. The
>> patch also has the unrelated change in
>shenandoahForwarding.hpp.
>>
>>
>> Sorry, it is a broken webrev.
>>
>> Updated:http://cr.openjdk.java.net/~zgu/JDK-8225483/webrev.01/
>>
>> Reran hotspot_gc_shenandoah (fastdebug and release)
>>
>> Thanks,
>>
>> -Zhengyu
>>
>>
>> *) Why change Raw::oop_store_in_heap to Raw::oop_store in
>> ShenandoahBarrierSet::oop_store_in_heap?
>>
>> *) You can write this block:
>>
>> #ifdef ASSERT
>> ShenandoahHeap* const heap = ShenandoahHeap::heap();
>> shenandoah_assert_marked_if(value,
>> heap->is_gc_in_progress_mask(ShenandoahHeap::EVACUATION));
>> #endif
>>
>> as:
>>
>> shenandoah_assert_marked_if(value,
>> ShenandoahHeap::heap()->is_evacuation_in_progress());
>>
>>
>> *) Also, this block:
>>
>> ShenandoahHeap* const heap = ShenandoahHeap::heap();
>> if (!CompressedOops::is_null(value) &&
>> heap->is_gc_in_progress_mask(ShenandoahHeap::EVACUATION)) {
>>
>> as:
>>
>> if (!CompressedOops::is_null(value) &&
>> ShenandoahHeap::heap()->is_evacuation_in_progress()) {
>>
>>
>>
>> -Aleksey
>>
>>
>> --
>> Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
--
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
More information about the shenandoah-dev
mailing list