RFR: 8293291: Simplify relocation of native pointers in archive heap [v5]

Calvin Cheung ccheung at openjdk.org
Tue Oct 18 23:47:44 UTC 2022


On Tue, 18 Oct 2022 21:50:15 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> 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).
>
> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fixed windows test failure

Marked as reviewed by ccheung (Reviewer).

-------------

PR: https://git.openjdk.org/jdk/pull/10296


More information about the hotspot-runtime-dev mailing list