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