[foreign-memaccess+abi] RFR: 8294970: Add linker option for saving thread-locals that the VM can overwrite
Jorn Vernee
jvernee at openjdk.org
Tue Oct 25 15:23:06 UTC 2022
This patch adds a new linker option, called `preserveValue`, that can be used to save thread-local values such as `errno` and `GetLastError` that the VM might overwrite. It takes a list of names of the values to save. Values are saved into a MemorySegment passed by the user, that is allocated according to the layout associated with the returned `PreserveValue` instance.
The API for this is somewhat convoluted, as we have to account for:
1. a different JVM implementation might not overwrite the same thread-locals, or non at all. Such JVM implementations should be free to support a different set of names to save, or none at all.
2. it should be possible to save multiple values during a single call.
But, this API is also flexible enough for an implementation to choose any layout it wants for the MemorySegment into which the values are saved. In the current implementation it's just a set of ints, but this could be changed as well.
---------
### Progress
- [x] Change must not contain extraneous whitespace
- [ ] Change must be properly reviewed (1 review required, with at least 1 [Committer](https://openjdk.org/bylaws#committer))
### Reviewing
<details><summary>Using <code>git</code></summary>
Checkout this PR locally: \
`$ git fetch https://git.openjdk.org/panama-foreign pull/742/head:pull/742` \
`$ git checkout pull/742`
Update a local copy of the PR: \
`$ git checkout pull/742` \
`$ git pull https://git.openjdk.org/panama-foreign pull/742/head`
</details>
<details><summary>Using Skara CLI tools</summary>
Checkout this PR locally: \
`$ git pr checkout 742`
View PR using the GUI difftool: \
`$ git pr show -t 742`
</details>
<details><summary>Using diff file</summary>
Download this PR as a diff file: \
<a href="https://git.openjdk.org/panama-foreign/pull/742.diff">https://git.openjdk.org/panama-foreign/pull/742.diff</a>
</details>
-------------
Commit messages:
- polish pt2
- plish javadoc
- rename rest as well
- rename save_thread_local -> preserve_value
- aarch64 support
- PreserveValue
Changes: https://git.openjdk.org/panama-foreign/pull/742/files
Webrev: https://webrevs.openjdk.org/?repo=panama-foreign&pr=742&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8294970
Stats: 579 lines in 26 files changed: 533 ins; 3 del; 43 mod
Patch: https://git.openjdk.org/panama-foreign/pull/742.diff
Fetch: git fetch https://git.openjdk.org/panama-foreign pull/742/head:pull/742
PR: https://git.openjdk.org/panama-foreign/pull/742
More information about the panama-dev
mailing list