RFR: 8293291: Simplify relocation of native pointers in archive heap
Ioi Lam
iklam at openjdk.org
Thu Sep 15 21:18:16 UTC 2022
Some objects in the archive heap contain native pointers. E.g., archived `java.lang.Class` objects contain a pointer to its `Klass*`.
At runtime, if the archived metadata are mapped at an alternative address, all of the `Klass*` pointers must be relocated. Instead of doing this in an ad-hoc way, this PR uses a bitmap, `FileMapRegion::ptrmap_view()`, to track the position of all the native pointers.
This PR is done in preparation for supporting new types of archived heap objects that have native pointers. E.g., `java.lang.invoke.ResolvedMethodName` has a pointer to a `Method*`.
Notes for reviewers:
- At dump time, the native pointers are remembered in `HeapShared::mark_native_pointers()`.
- At runtime, the native pointers are patched in `ArchiveHeapLoader::patch_native_pointers()`.
- The ad-hoc relocation code has been removed from javaClasses.cpp and systemDictionaryShared.cpp
- Many of the changes are for renaming from "oopmaps" to "bitmaps": the old code handled only a single type of pointers (oop references). The new code handles two types of bitmaps ("oopmap" is for oop references, "ptrmap" is for native pointers).
-------------
Commit messages:
- clean up
- 8293291: Simplify relocation of native pointers in archive heap
Changes: https://git.openjdk.org/jdk/pull/10296/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10296&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8293291
Stats: 418 lines in 16 files changed: 185 ins; 153 del; 80 mod
Patch: https://git.openjdk.org/jdk/pull/10296.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10296/head:pull/10296
PR: https://git.openjdk.org/jdk/pull/10296
More information about the hotspot-runtime-dev
mailing list