[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