RFR: Handle checkcast arraycopy correctly in barriers. Make arraycopy+barriers a single loop.
Roman Kennke
rkennke at redhat.com
Tue Feb 27 16:54:55 UTC 2018
Like this?
http://cr.openjdk.java.net/~rkennke/arraycopy-loop/webrev.02/
I couldn't get the inversion ~HAS_FORWARDED to compile without doing
shitty casts and going insane.
Roman
On Tue, Feb 27, 2018 at 2:40 PM, Aleksey Shipilev <shade at redhat.com> wrote:
> 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