RFR: Concurrent partial should fix up roots only on cancel

Roman Kennke roman at kennke.org
Tue Oct 10 13:45:47 UTC 2017


We don't need to fix anything if there was no work to to, right?

Am 10. Oktober 2017 15:04:39 MESZ schrieb Aleksey Shipilev <shade at redhat.com>:
>http://cr.openjdk.java.net/~shade/shenandoah/concpartial-fixroots-cancel/webrev.01/
>
>Obvious when you stare into assert like:
>
>#  assert(cancelled_concgc()) failed: Only after concurrent cycle
>failed
>
>...because the condition in final_partial_collection is cunning:
>
> 476   if (_has_work && ! _heap->cancelled_concgc()) {
>
>...can call into "else" branch, and thus call heap->fixup_roots()
>without cancelled GC, when
>_has_work=false. This will fail the assert inside fixup_roots(). We
>should just do that on
>cancellation path only.
>
>Testing: hotspot_gc_shenandoah
>
>Thanks,
>-Aleksey

-- 
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.


More information about the shenandoah-dev mailing list