RFR: 8352075: Perf regression accessing fields [v23]

Radim Vansa rvansa at openjdk.org
Mon Jun 9 09:08:59 UTC 2025


On Fri, 6 Jun 2025 19:22:10 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Radim Vansa has updated the pull request incrementally with two additional commits since the last revision:
>> 
>>  - Add more comments
>>  - Disable search table with dynamic CDS
>
> src/hotspot/share/utilities/packedTable.cpp line 83:
> 
>> 81:     assert(mid >= low && mid < high, "integer overflow?");
>> 82:     uint64_t element = read_element(data, length, _element_bytes * mid);
>> 83:     uint32_t key = element & _key_mask;
> 
> All this casting is hard to follow so I added this at the beginning of the file:
> 
> #ifndef _WIN32
> #pragma GCC diagnostic warning "-Wconversion"
> #endif
> 
> and this line, 102, and 87 complain:
> 
> 
> warning: conversion from 'uint64_t' {aka 'long unsigned int'} to 'uint32_t' {aka 'unsigned int'} may change value [-Wconversion]
>    87 |     uint32_t key = element & _key_mask;
>       |                    ~~~~~~~~^~~~~~~~~~~
> 
> 
> If the value is okay to cast to uint32_t, which I believe it is, use checked_cast<uint32_t> from checkedCast.hpp.

We cannot use `checked_cast`, because `element` can contain higher-order bits; but we want to ignore those. I can do an explicit `static_cast` and add a comment.

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

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


More information about the serviceability-dev mailing list