On Mon, 5 May 2025 06:35:39 GMT, Radim Vansa <rva...@openjdk.org> wrote:

>> src/hotspot/share/oops/fieldInfo.cpp line 52:
>> 
>>> 50: 
>>> 51: int FieldInfoStream::compare_symbols(const Symbol *s1, const Symbol 
>>> *s2) {
>>> 52:   // not lexicographical sort, since we need only total ordering
>> 
>> If only a total ordering is required, why defining a new method instead of 
>> reusing Symbol::fast_compare() ?
>
> The problem is CDS; I have really started with `fast_compare()`, but after 
> dehydration the pointers changed and the comparison did not work anymore. 
> This is also a reason why I could not use the hashcode for the ordering.
> If you'd prefer lexicographical sort (just a few extra lines) I could use 
> that one...

It's not good to introduce a new symbol comparator in a random place.  Symbol 
comparators should be defined and maintained centrally, in symbol.[ch]pp.

If there's a bug with fast_compare, I want us to fix it eventually.  So for 
now, define a companion function in symbol.hpp called fast_compare_cds_safe.  
We can work with it from there.  You can use your proposed logic but we will 
probably want to fiddle with it, and probably merge it with fast_compare (per 
se) if CDS can be adjusted.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24847#discussion_r2098921193

Reply via email to