Disable heap iteration for Shenandoah in SA

Aleksey Shipilev shade at redhat.com
Wed Nov 28 19:13:03 UTC 2018


On 11/28/18 7:27 PM, Roman Kennke wrote:
>> Wrong warning message, should be "Shenandoah" :)
>>
>>  374        System.err.println("Warning: Operation not supported with ZGC");
>>
>> Hold on, let me try to detect class unloading flags in SA, and conditionalize on that.
> 
> Ok, I'll wait. :-)
> 
> That would be +ClassUnloadingWithConcurrentMark only. +ClassUnloading
> (at full-gc) should be good.

Dang. I don't think even +ClassUnloading would be enough. Because we can also have broken reference
fields in the dead objects. Our "accurate" bitmap-if-below-TAMS iteration code in native GC handles
both old classes and reference fields correctly, but unless we teach SA code where the bitmap is, we
cannot guarantee not touching dead references. I remember native VM crashes when we touched dead
objects.

So, it seems the lesser evil is to disable the SA iteration wholesale, as Roman originally
suggested, and then consider exposing bitmaps for proper iteration.

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list