[8] Shenandoah: Fix build failure with +JFR -PCH

Aleksey Shipilev shade at redhat.com
Tue Jun 2 11:04:38 UTC 2020


Hi,

Current sh/jdk8 build fails if configured --enable-jfr and --disable-precompiled-headers like this:

In file included from
/home/shade/trunks/shenandoah-jdk8/hotspot/src/share/vm/jfr/instrumentation/jfrJvmtiAgent.cpp:29:0:
/home/shade/trunks/shenandoah-jdk8/hotspot/src/share/vm/jfr/jni/jfrUpcalls.hpp:57:10: error:
‘instanceKlassHandle’ does not name a type; did you mean ‘InstanceKlass’?
   static instanceKlassHandle load_event_handler_proxy_class(TRAPS);
          ^~~~~~~~~~~~~~~~~~~
          InstanceKlass

I notice we already have this upstream difference in os.hpp that unties the header circularity:

--- old/src/share/vm/runtime/os.hpp	2020-06-02 01:08:37.190316031 +0200
+++ new/src/share/vm/runtime/os.hpp	2020-06-02 01:08:37.110316134 +0200
@@ -28,7 +28,6 @@
 #include "jvmtifiles/jvmti.h"
 #include "runtime/atomic.hpp"
 #include "runtime/extendedPC.hpp"
-#include "runtime/handles.hpp"
 #include "utilities/top.hpp"
 #ifdef TARGET_OS_FAMILY_linux
 # include "jvm_linux.h"
@@ -54,6 +53,7 @@
 #endif

 class AgentLibrary;
+class methodHandle;

I tried to revert that block and solve it by rearranging Shenandoah includes a bit, but to no avail.
So, this is my plan B that seems to solve the build failure:

diff -r 4439a43801a4 src/share/vm/runtime/os.hpp
--- a/src/share/vm/runtime/os.hpp       Mon Jun 01 19:14:49 2020 +0200
+++ b/src/share/vm/runtime/os.hpp       Tue Jun 02 11:17:51 2020 +0200
@@ -52,10 +52,11 @@
 # endif
 #endif

 class AgentLibrary;
 class methodHandle;
+class instanceKlassHandle;

 // os defines the interface to operating system; this includes traditional
 // OS services (time, I/O) as well as other functionality with system-
 // dependent code.

Testing: Linux x86_64 builds with {+JFR, -JFR} x {+PCH, -PCH} x {release, fastdebug, slowdebug}

-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list