RFR: 8290833: Remove ConstantPoolCache::walk_entries_for_initialization() [v4]
Coleen Phillimore
coleenp at openjdk.org
Wed Aug 10 20:09:54 UTC 2022
On Tue, 9 Aug 2022 20:03:13 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> **Background:**
>>
>> `ConstantPoolCache::walk_entries_for_initialization()` is called by `ConstantPoolCache::remove_unshareable_info()` to restore the CpCache to the state immediately after the class has been rewritten by the Rewriter (which happens during the class linking phase). In most part, this means the `ConstantPoolCacheEntry`'s need to be zeroed. However, the `_f2` fields of some of the entries are initialized to be non-zero by the Rewriter and must be preserved.
>>
>> The reason `walk_entries_for_initialization()` exists is that after `Rewriter::rewrite()` has finished, some information about what is stored inside the CpCache is discarded (e.g., `Rewriter::_invokedynamic_references_map`). As a result, we cannot easily determine which entries has a `_f2` field that need to be preserved. We must walk all the bytecodes in all the methods of this class to recompute this information.
>>
>> This is awkward and time consuming. It also needs to be updated if the `Rewriter` ever changes.
>>
>> Also, for future optimizations, we may need to pre-resolve a subset of the CpCache entries during CDS dump time. Trying to make that work alongside `walk_entries_for_initialization()` seems too complicated.
>>
>> **Fix:**
>>
>> Store a copy of the CpCache after rewritting. Use this to revert the CpCache's state inside `ConstantPoolCache::remove_unshareable_info()`.
>
> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
>
> @coleenp review comments; added asserts
Maybe a couple more comments, otherwise, looks good. Approving again.
src/hotspot/share/cds/archiveBuilder.hpp line 203:
> 201: SourceObjList _ro_src_objs; // objs to put in ro region
> 202: ResizeableResourceHashtable<address, SourceObjInfo, ResourceObj::C_HEAP, mtClassShared> _src_obj_table;
> 203: ResizeableResourceHashtable<address, address, ResourceObj::C_HEAP, mtClassShared> _dumped_to_src_obj_table;
I was trying to sort out these tables. Can you have a comment above these tables what they are mapping? The names are somewhat opaque.
-------------
Marked as reviewed by coleenp (Reviewer).
PR: https://git.openjdk.org/jdk/pull/9759
More information about the hotspot-runtime-dev
mailing list