RFR [16] 8248170 Excessive include of compiledMethod, codeCache, javaClasses and systemDictionary
David Holmes
david.holmes at oracle.com
Wed Jun 24 09:41:15 UTC 2020
On 24/06/2020 4:16 pm, Ioi Lam wrote:
>
>
> On 6/23/20 9:08 PM, David Holmes wrote:
>> Hi Ioi,
>>
>> On 24/06/2020 6:10 am, Ioi Lam wrote:
>>> https://bugs.openjdk.java.net/browse/JDK-8248170
>>> http://cr.openjdk.java.net/~iklam/jdk16/8248170-fix-includes-compiledMethod-etc.v01/
>>>
>>>
>>> {compiledMethod, codeCache, javaClasses, systemDictionary}.hpp are
>>> unnecessarily included in some popular headers. This introduces
>>> unnecessary dependencies and slows down compile time.
>>
>> Based on your non-PCH local builds?
>>
>> I have no issue with removing unnecessary includes but I see far more
>> added includes in your changes than I see removals, so I'm a little
>> confused by that. I also have to wonder how on earth you concluded
>> that these particular includes were the cause of your problem ??
>>
> I ran a script on my local non-PCH build and got the following output. I
> scan the file from the bottom to look for things to fix.
Interesting! Thanks for sharing.
> http://cr.openjdk.java.net/~iklam/jdk16/misc/8248170-headers.txt
>
> The reasons for adding new includes: the fix has 2 parts
>
> (a) Remove unnecessary headers included by popular files such as thread.hpp
> (b) The above causes some sources files to break, because they were
> missing includes. These files could compile before my patch because the
> missing dependency was transitively included by thread.hpp, etc. Now I
> need to add the missing includes.
>
> E.g., os_windows.cpp has this
>
> 2342 CodeBlob* cb = CodeCache::find_blob(pc);
>
> ... so it needs to include codeCache.hpp, but that was transitively
> included by vmOperations.hpp.
Okay. Just seemed odd to see more added than taken away.
> =============
>
> I updated the patch based on Coleen's off-line feedback:
>
> http://cr.openjdk.java.net/~iklam/jdk16/8248170-fix-includes-compiledMethod-etc.v02/
>
> http://cr.openjdk.java.net/~iklam/jdk16/8248170-fix-includes-compiledMethod-etc.v02.delta/
Appears to me that c1_CodeStubs.hpp includes c1/c1_Runtime1.hpp, and
each of the c1_CodeStubs_<arch>.cpp files also include it. That seems
redundant.
Thanks,
David
-----
>
>
> Thanks
> - Ioi
>
>> The change seems harmless so I don't object.
>>
>> Thanks,
>> David
>>
>>> slowdebug:
>>> total number of files compiled: 264606 -> 260588 = -1.5%
>>> total number of lines compiled: 76073364 -> 74477347 = -2.1%
>>> size of libjvm.so (internal symbols): 234180296 bytes -> 233129904
>>> bytes = -0.5%
>>>
>>> (I got the statistics by parsing the *.d files in the build directory).
>>>
>>> Thanks
>>> - Ioi
>
More information about the hotspot-dev
mailing list