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