On Fri, 6 Feb 2026 12:21:43 GMT, Johan Sjölen <[email protected]> wrote:

>> Ioi Lam has updated the pull request incrementally with two additional 
>> commits since the last revision:
>> 
>>  - restored assert
>>  - @jdksjolen review comments
>
> src/hotspot/share/cds/aotCompressedPointers.hpp line 52:
> 
>> 50:   static narrowPtr cast_to_narrowPtr(T narrowp) {
>> 51:     return checked_cast<narrowPtr>(narrowp);
>> 52:   }
> 
> This is an escape hatch that let's you encode anything into a `narrowPtr`, 
> maybe it should be private? It doesn't seem to be used outside of the header 
> (did a quick Ctrl+F).

Now I have only `cast_from_u4` and `cast_to_u4` and don't allow arbitrary types 
anymore.

> src/hotspot/share/cds/aotCompressedPointers.hpp line 68:
> 
>> 66:   }
>> 67: 
>> 68:   static narrowPtr null_narrowPtr() {
> 
> Nit: I think you can just call this `null` and that's fine and a bit 
> prettier, but up to you.

Done.

> src/hotspot/share/cds/aotCompressedPointers.hpp line 103:
> 
>> 101: 
>> 102:   template <typename T>
>> 103:   static narrowPtr encode_null_or_address_cache(T ptr) { // may be null
> 
> For everything else we have `X` and `X_not_null` but for this one we have `X` 
> and `X_or_null`, so here we do the inverse. Is that on purpose?

I changed the name to `encode_address_in_cache_or_null()`.

I think only `encode_not_null()` and  `encode_address_in_cache_or_null()` make 
sense. Yes, one of them is `or` and the other is `not`. However, the opposite 
doesn't work:

- If we used `encode_address_in_cache(p1)` and 
`encode_address_in_cache_not_null(p2)` -- `p1` will never be null if it's 
inside the cache, so the two functions are equivalent. Both `p1` and `p2` 
cannot be null.
- If we used `encode(p1)` and `encode_or_null(p2)`, it's not clear that `p1` 
must not be null.

> src/hotspot/share/cds/aotCompressedPointers.hpp line 145:
> 
>> 143:       return decode_not_null<T>(base_address, narrowp);
>> 144:     }
>> 145:   }
> 
> We don't wanna do this with the `base_address` being an optional argument at 
> the end instead so we just have one function def?

Done

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29590#discussion_r2775591084
PR Review Comment: https://git.openjdk.org/jdk/pull/29590#discussion_r2775593035
PR Review Comment: https://git.openjdk.org/jdk/pull/29590#discussion_r2775619425
PR Review Comment: https://git.openjdk.org/jdk/pull/29590#discussion_r2775620252

Reply via email to