RFR: Primitive access for interpreter/x86

Roman Kennke rkennke at redhat.com
Thu May 3 19:42:49 UTC 2018


Am 03.05.2018 um 21:34 schrieb Aleksey Shipilev:
> On 05/03/2018 09:31 PM, Roman Kennke wrote:
>>>> http://cr.openjdk.java.net/~rkennke/interp_primitives/webrev.00/
>>>
>>> *) Indent breaks:
>>>
>>>   61   case T_BOOLEAN: __ load_unsigned_byte(dst, src); break;
>>>   62   case T_BYTE:    __ load_signed_byte(dst, src); break;
>>>   63   case T_CHAR:    __ load_unsigned_short(dst, src); break;
>>>   64   case T_SHORT:   __ load_signed_short(dst, src); break;
>>>   65   case T_INT:     __ movl  (dst, src); break;
>>>   66   case T_ADDRESS: __ movptr(dst, src); break;
>>
>> Ok, fixed.
>>
>>> *) It looks like {c|i|d|f}aloads are missing IN_HEAP_ARRAY decorators
>>
>> Right. Added them. Also to the Xastore variants.
>>
>>> *) The uncommented RB in ShenandoahBarrierSetAssembler::load_at -- had we missed it before? If so,
>>> should it be done separately to land in sh/jdk10 too?
>>>
>>> *) Ditto for uncommented WB in  ShenandoahBarrierSetAssembler::store_at?
>>
>> It was uncommented before because it was waiting for this patch :-)
>> There was also some commented-out debug code that I removed now.
> 
> Ah. So resolve_* did RBs before, right?

Correct. Now all those explicit barriers are gone and folded into the
general access calls. Except for a few places where we really need
explicit barriers (monitorenter/exit and some intrinsics code).


> Okay then.

I forgot to post the actual webrevs:

Diff:
http://cr.openjdk.java.net/~rkennke/interp_primitives/webrev.01.diff/
Full:
http://cr.openjdk.java.net/~rkennke/interp_primitives/webrev.01/

>> I forgot to mention it before, but this patch also fixes a missing RB in
>> methodHandles_x86.cpp via load_heap_oop(). I shall propose this
>> separately for backporting.
> 
> Yes, please do.

I need to check this carefully. When working on it, it did look like
missing barrier, but now it doesn't look like it ;-) It's hard to reason
about it when the accesses are disconnected from the actual barrier and
located many lines away. The new code makes this much better/easier.

Roman



More information about the shenandoah-dev mailing list