On Fri, 25 Apr 2025 19:39:01 GMT, Dan Heidinga <heidi...@openjdk.org> wrote:

>> Ioi Lam has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   @fisk comment
>
> src/hotspot/share/cds/aotReferenceObjSupport.cpp line 106:
> 
>> 104:     assert(CDSConfig::allow_only_single_java_thread(), "Required");
>> 105: 
>> 106:     TempNewSymbol method_name = 
>> SymbolTable::new_symbol("prepareForAOTCache");
> 
> I'm slightly uncomfortable with using the same method name 
> (`prepareForAOTCache`) on MethodType and on ReferenceKeyMap & ReferenceKeySet 
> as they have different expected use cases.  The one on MT is the "front door" 
> the VM calls to remove stale Reference objects while the RKMap/RKSet are 
> internal mechanisms that the VM would never call except for MT triggering it.
> 
> Does it make sense to use different names for these methods?  The MT one is a 
> hook that could be extended to other classes to prepare them for cache 
> creation while we wouldn't treat the RKMap/RKSet ones in the same way.  Maybe 
> append "_internal" or "_helper" to the RFMap/Set methods to distinguish them?

In my mind, `MethodType::prepareForAOTCache()` makes sure all data used by 
`MethodType` are ready to be cached. `ReferenceKeySet::prepareForAOTCache()` 
does the same for this particular `ReferenceKeySet` instance.

Potentially we could have


class MethodType {
    static void prepareForAOTCache() {
        table1.prepareForAOTCache();
        table2.prepareForAOTCache();
        ....
    }
}


We can have many levels of `prepareForAOTCache()` calls where each level 
delegates the operations to its sub-components. There are no obvious 
"frontend/backend" or "interface/implementation" boundaries.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24757#discussion_r2062910787

Reply via email to