[foreign-memaccess+abi] RFR: Check for mixed access - remove mem barriers
Radoslaw Smogura
github.com+7535718+rsmogura at openjdk.java.net
Tue Jul 27 17:29:45 UTC 2021
On Sat, 24 Jul 2021 16:07:09 GMT, Radoslaw Smogura <github.com+7535718+rsmogura at openjdk.org> wrote:
> That's for previous PR, which I destroyed with bad merge from master.
>
> I wonder if this can look like this?
>
>
> Benchmark (size) Mode Cnt Score Error Units
> ByteBufferVectorAccess.directBuffers 1024 avgt 10 27.119 ? 0.186 ns/op
> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 28.501 ? 0.118 ns/op
> ByteBufferVectorAccess.pollutedBuffers 1024 avgt 10 64.354 ? 27.778 ns/op
> Finished running test 'micro:ByteBufferVectorAccess'
>
>
> https://github.com/openjdk/panama-foreign/pull/566
I did some deeper checks about polluted case and for some reason Unsafe works differently than "get filed". I can't answer why so. It looks very related to JIT.
void intoByteBuffer0(ByteBuffer bb, int offset) {
if (!bb.isDirect()) {
return fromByteArray0(bb.array(), offset);
}
change to
if (!bb.isDirect()) {
intoByteArray0((byte[]) ScopedMemoryAccess.BufferAccess.bufferBase(bb), offset);
makes such a huge difference.
-------------
PR: https://git.openjdk.java.net/panama-foreign/pull/573
More information about the panama-dev
mailing list