[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:28:13 UTC 2020
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