RFR 8225483: Shenandoah: Enhance native access barrier
Zhengyu Gu
zgu at redhat.com
Tue Jun 11 14:25:21 UTC 2019
Updated: http://cr.openjdk.java.net/~zgu/JDK-8225483/webrev.02/
Okay now?
Thanks,
-Zhengyu
On 6/11/19 6:43 AM, Roman Kennke wrote:
> I think it returns either NULL or passes through LRB, I think this is
> fine and does not leak from-space-refs.
>
> Roman
>
>
> Am 11. Juni 2019 11:23:12 MESZ schrieb Aleksey Shipilev <shade at redhat.com>:
>
> On 6/11/19 1:14 AM, Zhengyu Gu wrote:
>
> 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/
>
>
> This patch cannot go to jdk/jdk. It can only go to sh/jdk.
>
> *) This block:
>
> 99 ShenandoahHeap* const heap = ShenandoahHeap::heap();
> 100 shenandoah_assert_marked_if(NULL, value, !CompressedOops::is_null(value) &&
> heap->is_evacuation_in_progress());
>
> Can be just:
>
> shenandoah_assert_marked_if(NULL, value, !CompressedOops::is_null(value) &&
> ShenandoahHeap::heap()->is_evacuation_in_progress());
>
> *) After the change above is done, you can make SBS::oop_store_not_in_heap available always: e.g.
> drop the ASSERT around it.
>
> *) I think the block in oop_load_not_in_heap needs the comment why this is done. This is a weird
> exception anyway: it leaks the from-space pointers from the weak roots, no? What actually guarantees
> we would not store that from-space pointer somewhere *on heap*?
>
> *) This block can be simplified:
>
> ShenandoahHeap* const heap = ShenandoahHeap::heap();
> if (heap->is_evacuation_in_progress()) {
> ShenandoahMarkingContext* const marking_context = heap->complete_marking_context();
> if (!marking_context->is_marked(value)) {
> return NULL;
> }
> }
>
> to:
>
> ShenandoahHeap* const heap = ShenandoahHeap::heap();
> if (heap->is_evacuation_in_progress() && !heap->complete_marking_context()->is_marked(value)) {
> return NULL;
> }
>
> -Aleksey
>
>
> --
> Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
More information about the hotspot-gc-dev
mailing list