RFR: 8362657: Make tables used in AOT assembly phase GC-safe
Ioi Lam
iklam at openjdk.org
Fri Jul 18 21:37:47 UTC 2025
This fixes crashes when using `-Xlog:aot+map=trace,aot+map+oops=trace:file=aot.oops.txt:none:filesize=0` during the assembly phase.
I basically changed a few raw `oop` pointers to `OopHandle`. I also simplified `ArchiveHeapWriter::is_marked_as_native_pointer()`.
Note that for `HeapShared::archived_object_cache()`, I calculate the hashcode using the raw oop. This way, we can avoid calling `oopDesc::identity_hash()` for every archived oops. As a result, when we use this table after exiting the CDS safepoint, we must rehash it. See changes in `ArchiveBuilder::CDSMapLogger::log()`.
- It might be alright to pre-calculate the identity hash of the archived oops in the assembly phase, but I think we should do that only if we find a reason to do so. We shouldn't do it just because it's convenient for implementing an internal table,
-------------
Commit messages:
- Fixed white spaces
- 8362657: Make tables used in AOT assembly phase GC-safe
Changes: https://git.openjdk.org/leyden/pull/86/files
Webrev: https://webrevs.openjdk.org/?repo=leyden&pr=86&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8362657
Stats: 144 lines in 8 files changed: 89 ins; 21 del; 34 mod
Patch: https://git.openjdk.org/leyden/pull/86.diff
Fetch: git fetch https://git.openjdk.org/leyden.git pull/86/head:pull/86
PR: https://git.openjdk.org/leyden/pull/86
More information about the leyden-dev
mailing list