RFR: 8365814: Consolidate has_been_archived() and has_been_buffered() in ArchiveBuilder

Coleen Phillimore coleenp at openjdk.org
Thu Aug 21 19:28:53 UTC 2025


On Thu, 21 Aug 2025 00:59:22 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> src/hotspot/share/cds/archiveBuilder.hpp line 448:
>> 
>>> 446:   bool has_been_archived(address src_addr) const;
>>> 447:   template <typename T> bool has_been_archived(T src_addr) const {
>>> 448:     return has_been_archived((address)src_addr);
>> 
>> What's the point of having a template if you're going to erase the type?
>
> I did it this way so the caller doesn't need to do casting like
> 
> 
> Method* m = xxx();
> if (has_been_archived((address)m)) {.....}
> 
> 
> Is there a better way to indicate that `has_been_archived()` takes any pointer?

I think you probably should cast away the type at the call sites. The template's not going to make it any more type-safe.  It's sort of deceiving that it kinda looks type safe.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26853#discussion_r2291943273


More information about the hotspot-runtime-dev mailing list