ShenandoahBarrierNode::needs_barrier() doesn't fully support compressed oops
Roland Westrelin
rwestrel at redhat.com
Fri Oct 7 08:21:25 UTC 2016
Forgot to include the list in my answer. Here is the follow up discussion:
On 10/07/2016 10:20 AM, Roman Kennke wrote:
>
> Am 07.10.2016 10:09 vorm. schrieb Roland Westrelin <rwestrel at redhat.com>:
>>
>>> Our barriers don't operate on compressed oops. There must always be a
>>> Decode*Node in between a, e.g., LoadN and a shenandoah barrier. We
>>> shuold never get to a LoadN or similar node.
>>
>> Because of that change:
>>
>> 160 if (n->Opcode() == Op_DecodeN ||
>> 161 n->Opcode() == Op_EncodeP) {
>> 162 return needs_barrier_impl(phase, orig, n->in(1), rb_mem,
>> allow_fromspace, visited);
>> 163 }
>>
>> we can reach a LoadN. The rational is that we might encounter a useless
>> DecodeN (for instance DecodeN->ConN) that's not yet removed. While it
>> doesn't sound likely, it's also pretty easy to check.
>
>
> Ah OK, I get it now. OK!
>
> Roman
>
More information about the shenandoah-dev
mailing list