RFR(M) 8252526 Remove excessive inclusion of jvmti.h and jvmtiExport.hpp

David Holmes david.holmes at oracle.com
Mon Aug 31 23:05:04 UTC 2020


Hi Ioi,

I haven't looked at the code changes ...

On 1/09/2020 4:13 am, Ioi Lam wrote:
> https://bugs.openjdk.java.net/browse/JDK-8252526
> http://cr.openjdk.java.net/~iklam/jdk16/8252526-fix-jvmti-hpp.v01/
> 
> (I marked this RFR as "M" because 63 files have changed, but most of the 
> are
> just adding a missing #include "prims/jvmtiExport.hpp").
> 
> jvmti.h is included 905 times and jvmtiExport.hpp is included 776 times
> (by 971 hotspot .o files). Most of these are unnecessarily included by the
> following 3 popular header files:
> 
> [1] javaClasses.hpp: ThreadStatus is rarely used, and should be moved
>      to javaThreadStatus.hpp. I also converted the enum to an C++ 11
>      enum class for better type safety. (see also JDK-8247938).
> 
> [2] os.hpp: No need to include jvm.h. Use forward declaration
>      "typedef struct _jvmtiTimerInfo jvmtiTimerInfo;" instead.

That does not seem reasonable to me. It is one thing to do a simple 
forward declaration of a class but this is an internal detail of JVMTI 
which os.hpp has no business knowing about.

> [3] thread.hpp: No need to include jvmExport.hpp. Use forward declaration
>      for JvmtiSampledObjectAllocEventCollector and
>      JvmtiVMObjectAllocEventCollector instead.
> 
> 
> The total number of includes have reduced from 252033 to 250001. Build 
> time of
> slow-debug libjvm.so is reduced from 2:07 to 2:04 on my machine.

I'm not sure why we really care. The build times are not that 
problematic that it warrants some of these header file hacks IMO. Are 
those figures with or without PCH?

David
-----

> 
> Thanks
> - Ioi
> 


More information about the hotspot-runtime-dev mailing list