[foreign-memaccess+abi] RFR: Prevent maxAlign virtual calls for polluted accesses
Radoslaw Smogura
duke at openjdk.org
Sat Aug 6 08:51:15 UTC 2022
In case of polluted accesses (when different kinds of segments are accessed
from same code), `maxAlign()` can get virtual call which would prevent
effective inlining and loop optimizations.
This patch moves `maxAlign` to `AbstractMemorySegmentImpl` field, and makes method
final. The value of align is passed as constructor argument.
_Note: This patch can cause slightly bigger memory usage, as memory segment will carry `maxAlign` value, this can optimizaed by using smaller container for value i. e. `byte` or `short`_
After
Benchmark (size) Mode Cnt Score Error Units
MixedAccessBenchmarks.directCopy 1048576 avgt 10 16410.733 ± 79.901 ns/op
MixedAccessBenchmarks.pollutedAccessCopy 1048576 avgt 10 168497.502 ± 632.578 ns/op
Before
Benchmark (size) Mode Cnt Score Error Units
MixedAccessBenchmarks.directCopy 1048576 avgt 10 18336.054 ± 63.133 ns/op
MixedAccessBenchmarks.pollutedAccessCopy 1048576 avgt 10 2069032.456 ± 167512.633 ns/op
-------------
Commit messages:
- Prevent maxAlign virtual calls for polluted accesses
Changes: https://git.openjdk.org/panama-foreign/pull/700/files
Webrev: https://webrevs.openjdk.org/?repo=panama-foreign&pr=700&range=00
Stats: 114 lines in 4 files changed: 62 ins; 40 del; 12 mod
Patch: https://git.openjdk.org/panama-foreign/pull/700.diff
Fetch: git fetch https://git.openjdk.org/panama-foreign pull/700/head:pull/700
PR: https://git.openjdk.org/panama-foreign/pull/700
More information about the panama-dev
mailing list