Change the default code entry alignment to 64 bytes from 32 bytes.  This allows 
for maintaining proper 64-byte alignment of data within a code segment, which 
is required by several AVX-512 instructions.

I ran into this while implementing Base64 encoding and decoding.  Code segments 
which were allocated with the address mod 32 == 0 but with the address mod 64 
!= 0 would cause the align() macro to misalign.  This is because the align 
macro aligns to the size of the code segment and not the offset of the PC.  So 
align(64) would align the PC to a multiple of 64 bytes from the start of the 
segment, and not to a pure 64-byte boundary as requested.  Changing the 
alignment of the segment to 64 bytes fixes the issue.

I have not seen any measurable difference in either performance or memory usage 
with the tests I have run.

See [this 
](https://mail.openjdk.java.net/pipermail/hotspot-dev/2021-August/054180.html) 
article for the discussion thread.

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

Commit messages:
 - Change default code entry alignment to 64 bytes
 - Fix align() directive
 - Merge branch 'openjdk:master' into master
 - Merge branch 'openjdk:master' into master
 - Fixing .gitignore

Changes: https://git.openjdk.java.net/jdk/pull/5547/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5547&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8273459
  Stats: 2 lines in 2 files changed: 0 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/5547.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/5547/head:pull/5547

PR: https://git.openjdk.java.net/jdk/pull/5547

Reply via email to