RFR: 8329194: Cleanup Type::cmp definition and usage
Jasmine Karthikeyan
jkarthikeyan at openjdk.org
Thu Apr 11 13:31:42 UTC 2024
On Thu, 11 Apr 2024 07:37:19 GMT, Damon Fenacci <dfenacci at openjdk.org> wrote:
>> Hi all, this patch aims to cleanup `Type::cmp` by changing it from returning a `0` when types are equal and `1` when they are not, to it returning a boolean denoting equality. This makes its usages at various callsites more intuitive. However, as it is passed to the type dictionary as a comparator, a lambda is needed to map the boolean to a comparison value.
>>
>> I was also considering changing the name to `Type::equals` as it's not really returning a comparison value anymore, but I felt it would be too similar to `Type::eq`. If this would be preferred though, I can change it.
>>
>> Tier 1 testing passes on my machine. Reviews and thoughts would be appreciated!
>
> src/hotspot/share/opto/type.cpp line 441:
>
>> 439: // Map the boolean result of Type::cmp into a comparator result that CmpKey expects.
>> 440: auto type_cmp = [](const void* t1, const void* t2) -> int32_t {
>> 441: return Type::cmp((Type*) t1, (Type*) t2) ? 0 : 1;
>
> Wouldn't `return !Type::cmp((Type*) t1, (Type*) t2);` be enough? (though it might actually result in the same compiled code)
I think this would work too, but I wanted to avoid the implicit boolean to integer conversion. I can make this change if it would be fine, though.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/18533#discussion_r1561026656
More information about the hotspot-compiler-dev
mailing list