[vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases

Radoslaw Smogura github.com+7535718+rsmogura at openjdk.java.net
Tue Jul 27 20:48:16 UTC 2021


# Description
This change tries to remove mem bars for byte buffer cases.

Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported).

# Testing
Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded

# Notes
Polluted cases to be addressed later

# Benchmarks

Benchmark                                (size)  Mode  Cnt    Score   Error  Units
ByteBufferVectorAccess.arrays              1024  avgt   10   12.585 ? 0.409  ns/op
ByteBufferVectorAccess.directBuffers       1024  avgt   10   19.962 ? 0.080  ns/op
ByteBufferVectorAccess.heapBuffers         1024  avgt   10   15.878 ? 0.187  ns/op
ByteBufferVectorAccess.pollutedBuffers2    1024  avgt   10  123.702 ? 0.723  ns/op
ByteBufferVectorAccess.pollutedBuffers3    1024  avgt   10  223.928 ? 1.906  ns/op

Before

Benchmark                                (size)  Mode  Cnt    Score   Error  Units
ByteBufferVectorAccess.arrays              1024  avgt   10   14.730 ? 0.061  ns/op
ByteBufferVectorAccess.directBuffers       1024  avgt   10   77.707 ? 4.867  ns/op
ByteBufferVectorAccess.heapBuffers         1024  avgt   10   76.530 ? 1.076  ns/op
ByteBufferVectorAccess.pollutedBuffers2    1024  avgt   10  143.331 ? 1.096  ns/op
ByteBufferVectorAccess.pollutedBuffers3    1024  avgt   10  286.645 ? 3.444  ns/op

-------------

Commit messages:
 - Added jtreg test
 - Revert template
 - Ignore
 - Make comparision same like in access fence
 - Avoid unneded casts, new mixed test
 - Move null / byte closer to intrinsic
 - Add missing templates
 - Check for mixed access.

Changes: https://git.openjdk.java.net/panama-vector/pull/104/files
 Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=00
  Stats: 231 lines in 5 files changed: 219 ins; 0 del; 12 mod
  Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104

PR: https://git.openjdk.java.net/panama-vector/pull/104


More information about the panama-dev mailing list