[foreign-memaccess] RFR 8237349: Memory access var handles are never called with exact types

Jorn Vernee jorn.vernee at oracle.com
Thu Jan 30 13:33:47 UTC 2020


Yes, go ahead.

Jorn

On 30/01/2020 14:30, Maurizio Cimadamore wrote:
> Yes - I realized that yesterday... will fix and push if that's ok
>
> Maurizio
>
> On 30/01/2020 13:28, Jorn Vernee wrote:
>> Hi,
>>
>> Aren't you missing the fixup for the other two 
>> memoryAddressViewVarHandle calls in MemoryHandles?
>>
>> Jorn
>>
>> On 29/01/2020 17:10, Maurizio Cimadamore wrote:
>>> We currently have an issue: since the memory access var handle have 
>>> to use MemoryAddressProxy as their first coordinate (such handles 
>>> are generated in java.base which doesn't see the true MemoryAddress 
>>> interface), whenever a var handle get/set fall outside the guards in 
>>> VarHandleGuards performance suffer big time, because a full asType() 
>>> adaptation has to occur.
>>>
>>> For instance these are some numbers for the TestOverNonConstant 
>>> benchmark:
>>>
>>> W/ guards
>>>
>>> 0.306 ms/op
>>>
>>> W/o guards (-Djava.lang.invoke.VarHandle.VAR_HANDLE_GUARDS=false)
>>>
>>> 13.926 ms/op
>>>
>>> The proposed patch adds an adaptation step to all memory access 
>>> handles, so that their coordinate type is adjusted to be 
>>> MemoryAddress, not MemoryAddressProxy. With this, there's no 
>>> difference in performances w/ and w/o guards.
>>>
>>> Webrev:
>>>
>>> http://cr.openjdk.java.net/~mcimadamore/panama/8237349/
>>>
>>> Note: as demonstrated in the test changes, this also makes adapting 
>>> access var handle easier, since the user can't really access 
>>> MemoryAddressProxy.
>>>
>>> P.S.
>>> As a precaution I've run all our microbenchmark which seem 
>>> unaffected by this (except in cases where, as shown above, this 
>>> patch makes quite the - positive - difference).
>>>
>>> Maurizio
>>>
>>>


More information about the panama-dev mailing list