RFR: Handle checkcast arraycopy correctly in barriers. Make arraycopy+barriers a single loop.
Aleksey Shipilev
shade at redhat.com
Tue Feb 27 13:40:25 UTC 2018
On 02/27/2018 02:34 PM, Roman Kennke wrote:
> Just when I pushed, I hit this assert:
>
> # Internal Error
> (/home/rkennke/src/openjdk/shenandoah-jdk/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp:285),
> pid=1884, tid=1911
> # assert(heap->is_stable() || heap->is_evacuation_in_progress())
> failed: must not have anything in progress
>
>
> The issue there is that it can't be stable because it has the
> has_forwarded bit set, which is valid (and obvious) at this point.
> Should we relax the is_stable() property or go back to checking that
> none stuff is in_progress as before?
Yeah, I think it should be:
assert(heap->is_idle() || heap->is_evacuation_in_progress(), "must not have anything in progress");
...where is_idle() is something like:
is_set(~ShenandoahHeap::HAS_FORWARDED_OBJECTS);
That way the assert would still capture any new state bit that we would introduce later.
-Aleksey
More information about the shenandoah-dev
mailing list