Pull in linker implementation changes, that include non-trivial changes to VM code, from the panama-foreign repo into the main JDK.
This is split off from the main JEP integration to make reviewing easier. This includes the following patches: 1. https://github.com/openjdk/panama-foreign/pull/698 2. https://github.com/openjdk/panama-foreign/pull/699 3. (part of) https://github.com/openjdk/panama-foreign/pull/731 4. https://github.com/openjdk/panama-foreign/pull/740 5. https://github.com/openjdk/panama-foreign/pull/746 6. https://github.com/openjdk/panama-foreign/pull/742 7. https://github.com/openjdk/panama-foreign/pull/743 Probably the biggest change to the code comes from replacing `VMReg` - which can not represent offsets into the stack that are not a multiple of the VM's stack slot size (32-bits) - with the new `VMStorage` class, which can describe byte offsets into the stack, as well as having a register mask to indicate only certain register segments. The only part of 3. that is in this PR is the part that turns the `VMStorage` class in Java into a record. Please refer to the PR of each individual patch for a more detailed description. ------------- Depends on: https://git.openjdk.org/jdk/pull/10872 Commit messages: - Rename CAPTURED_STATE_MASK stub location to CAPTURED_STATE_BUFFER - fix TestCaptureCallState - add stubs - 8295353: Mark Register v24 as Volatile in Foreign Function & Memory C ABI Definition - 8294970: Add linker option for saving thread-locals that the VM can overwrite - 8275584: Incorrect stack spilling in CallArranger on MacOS/AArch64 - 8295265: Refactor handling of special values passed to stubs - VMStorage to record - 8275644: Replace VMReg in shuffling code with something more fine grained. - 8291913: Remove the TraceOptimizedUpcallStubs flag Changes: https://git.openjdk.org/jdk/pull/11019/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11019&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8296477 Stats: 2766 lines in 67 files changed: 1861 ins; 315 del; 590 mod Patch: https://git.openjdk.org/jdk/pull/11019.diff Fetch: git fetch https://git.openjdk.org/jdk pull/11019/head:pull/11019 PR: https://git.openjdk.org/jdk/pull/11019