RFR: 8349088: De-virtualize Codeblob and nmethod [v7]
Vladimir Kozlov
kvn at openjdk.org
Thu Feb 13 17:05:04 UTC 2025
> Remove virtual methods from CodeBlob and nmethod to simplify saving/restoring in Leyden AOT cache. It avoids the need to patch hidden VPTR pointer to class's virtual table.
>
> Added C++ static asserts to make sure no virtual methods are added in a future.
>
> Fixed/cleaned SA code which process CodeBlob and its subclasses. Use `CodeBlob::_kind` field value to determine the type of blob.
>
> Tested tier1-5, hs-tier6-rt (for JFR testing), stress, xcomp
Vladimir Kozlov 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 eight additional commits since the last revision:
- Update SA based on comments
- Merge branch 'master' into 8349088
- Fix Zero VM build
- Fix Minimal and Zero VM builds once more
- Fix Minimal and Zero VM builds again
- Add CodeBlob proxy vtable
- Fix Zero and Minimal VM builds
- 8349088: De-virtualize Codeblob and nmethod
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/23533/files
- new: https://git.openjdk.org/jdk/pull/23533/files/b09ddce6..515495b2
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=23533&range=06
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=23533&range=05-06
Stats: 11482 lines in 618 files changed: 7914 ins; 1738 del; 1830 mod
Patch: https://git.openjdk.org/jdk/pull/23533.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/23533/head:pull/23533
PR: https://git.openjdk.org/jdk/pull/23533
More information about the serviceability-dev
mailing list