RFR: Primitive access for interpreter/x86
Roman Kennke
rkennke at redhat.com
Thu May 3 19:42:56 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