On Tue, 28 Sep 2021 16:21:59 GMT, Scott Gibbons 
<github.com+6704669+asgibb...@openjdk.org> wrote:

>> 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.
>
> Scott Gibbons has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains seven additional 
> commits since the last revision:
> 
>  - Merge branch 'openjdk:master' into asgibbons-align-fix
>  - Revert alignment of 64-bytes; Add align64()
>  - Change default code entry alignment to 64 bytes
>  - Fix align() directive
>    
>    Change align(x) to be relative to the current section's end rather than 
> its size.  Issue was uncovered with a raw align(64).
>  - Merge branch 'openjdk:master' into master
>  - Merge branch 'openjdk:master' into master
>  - Fixing .gitignore

Thanks for the comments.  I reverted the .gitignore change and added comments 
as requested.  I also found a couple of unmodified align(64) which were changed.

As suggested, I added an assert in align() to flag spots where alignment cannot 
be ensured.

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

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

Reply via email to