RFR: 8283689: Update the foreign linker VM implementation [v7]
Jorn Vernee
jvernee at openjdk.java.net
Mon May 9 10:28:27 UTC 2022
> Hi,
>
> This PR updates the VM implementation of the foreign linker, by bringing over commits from the panama-foreign repo.
>
> This is split off from the main JEP integration for 19, since we have limited resources to handle this. As such, this PR might fall over to 20.
>
> I've written up an overview of the Linker architecture here: http://cr.openjdk.java.net/~jvernee/docs/FL_Overview.html it might be useful to read that first.
>
> This patch moves from the "legacy" implementation, to what is currently implemented in the panama-foreign repo, except for replacing the use of method handle combinators with ASM. That will come in a later path. To recap. This PR contains the following changes:
>
> 1. VM stubs for downcalls are now generated up front, instead of lazily by C2 [1].
> 2. the VM support for upcalls/downcalls now support all possible call shapes. And VM stubs and Java code implementing the buffered invocation strategy has been removed [2], [3], [4], [5].
> 3. The existing C2 intrinsification support for the `linkToNative` method handle linker was no longer needed and has been removed [6] (support might be re-added in another form later).
> 4. Some other cleanups, such as: OptimizedEntryBlob (for upcalls) now implements RuntimeBlob directly. Binding to java classes has been rewritten to use javaClasses.h/cpp (this wasn't previously possible due to these java classes being in an incubator module) [7], [8], [9].
>
> While the patch mostly consists of VM changes, there are also some Java changes to support (2).
>
> The original commit structure has been mostly retained, so it might be useful to look at a specific commit, or the corresponding patch in the [panama-foreign](https://github.com/openjdk/panama-foreign/pulls?q=is%3Apr) repo as well. I've also left some inline comments to explain some of the changes, which will hopefully make reviewing easier.
>
> Testing: Tier1-4
>
> Thanks,
> Jorn
>
> [1]: https://github.com/openjdk/jdk/pull/7959/commits/048b88156814579dca1f70742061ad24942fd358
> [2]: https://github.com/openjdk/jdk/pull/7959/commits/2fbbef472b4c2b4fee5ede2f18cd81ab61e88f49
> [3]: https://github.com/openjdk/jdk/pull/7959/commits/8a957a4ed9cc8d1f708ea8777212eb51ab403dc3
> [4]: https://github.com/openjdk/jdk/pull/7959/commits/35ba1d964f1de4a77345dc58debe0565db4b0ff3
> [5]: https://github.com/openjdk/jdk/pull/7959/commits/4e72aae22920300c5ffa16fed805b62ed9092120
> [6]: https://github.com/openjdk/jdk/pull/7959/commits/08e22e1b468c5c8f0cfd7135c72849944068aa7a
> [7]: https://github.com/openjdk/jdk/pull/7959/commits/451cd9edf54016c182dab21a8b26bd8b609fc062
> [8]: https://github.com/openjdk/jdk/pull/7959/commits/4c851d2795afafec3a3ab17f4142ee098692068f
> [9]: https://github.com/openjdk/jdk/pull/7959/commits/d025377799424f31512dca2ffe95491cd5ae22f9
Jorn Vernee has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 21 commits:
- Merge branch 'foreign-preview-m' into JEP-19-VM-IMPL2
- Remove unneeded ComputeMoveOrder
- Remove comment about native calls in lcm.cpp
- 8284072: foreign/StdLibTest.java randomly crashes on MacOS/AArch64
Reviewed-by: jvernee, mcimadamore
- Update riscv and arm stubs
- Remove spurious ProblemList change
- Pass pointer to LogStream
- Polish
- Replace TraceNativeInvokers flag with unified logging
- Fix other platforms, take 2
- ... and 11 more: https://git.openjdk.java.net/jdk/compare/3c88a2ef...43fd1b91
-------------
Changes: https://git.openjdk.java.net/jdk/pull/7959/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7959&range=06
Stats: 6934 lines in 157 files changed: 2678 ins; 3218 del; 1038 mod
Patch: https://git.openjdk.java.net/jdk/pull/7959.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7959/head:pull/7959
PR: https://git.openjdk.java.net/jdk/pull/7959
More information about the hotspot-compiler-dev
mailing list