RFR: 8314694: Separate checked_cast from globalDefinitions.hpp

Kim Barrett kbarrett at openjdk.org
Tue Aug 22 16:39:17 UTC 2023


On Tue, 22 Aug 2023 06:54:20 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:

>> Please review this change which moves checked_cast from globalDefinitions.hpp
>> to a separate file.  As part of this change we modify files that use
>> checked_cast to directly include that new file.  There are around 80 such
>> files, and that change constitutes the majority of the changed files and lines
>> in this PR.
>> 
>> This PR doesn't fix the definition of checked_cast (see JDK-8314258).  It just
>> moves the existing definition to a new file, in preparation for fixing it
>> later.  (I'm running tests on a fixed implementation.)
>> 
>> An alternative is to move checked_cast to a new file but have
>> globalDefinitions.hpp include that new file.  This would avoid touching the
>> include lists of currently using files.  It seems to me better to actually
>> separate it.
>> 
>> Fortunately, there was only one copyright update needed. Most of the uses were
>> added recently as part of addressing -Wconversion warnings, so those files
>> have already had copyright updates recently.
>> 
>> The other change was to move pointer_delta_as_int next to the related
>> pointer_delta, and change it to use a direct assert and static_cast, rather
>> than checked_cast.
>> 
>> With the exception of the simple change to pointer_delta_as_int the changes
>> in this PR are very simple and almost mechanical.  To find the files needing
>> an additional include and to demonstrate completing that task, I applied this
>> command to the hotspot directory:
>> 
>> 
>> egrep -r --files-with-matches --exclude-dir=.git " checked_cast<" . | \
>>   xargs egrep --files-without-match "utilities/checkedCast.hpp"
>> 
>> 
>> So perhaps this change is trivial, despite the number of files.
>> 
>> Testing:
>> mach5 tier1
>
> Looks good.
> 
> Interesting how many of the touched cpp files did not include globalDefinitions.hpp.

Thanks for reviews @tstuefe and @coleenp .

> Interesting how many of the touched cpp files did not include globalDefinitions.hpp.

Oh, there are much worse things than that!  Take a look at utilities/elfFile.hpp :(

There was some exploration of the "Include What You Use" tool a long time ago, but it seemed like it didn't quite do what
we wanted.  https://include-what-you-use.org/

I'll run the command to check for using files that are missing the new include before integration.  That might show more
files needing the include added.  For example, https://github.com/openjdk/jdk/pull/15289 is ready to integrate.

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

PR Comment: https://git.openjdk.org/jdk/pull/15377#issuecomment-1688526986


More information about the serviceability-dev mailing list