RFR: Concurrent partial should fix up roots only on cancel

Zhengyu Gu zgu at redhat.com
Tue Oct 10 13:30:51 UTC 2017


Good to me.

-Zhengyu

On 10/10/2017 09:04 AM, Aleksey Shipilev wrote:
> 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
> 


More information about the shenandoah-dev mailing list