RFR 8225483: Shenandoah: Enhance native access barrier

Zhengyu Gu zgu at redhat.com
Tue Jun 11 18:19:37 UTC 2019



On 6/11/19 2:15 PM, Roman Kennke wrote:
> BTW, not really. Returning NULL for unreachable oops is a prerequisite 
> for concurrent cleaning. Concurrent evacuation&updating can be done with 
> just the LRB.

Right! I will move this CR out of JDK-8225534.

Thanks,

-Zhengyu

> 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 hotspot-gc-dev mailing list