Relates :
|
x86_32: In file included from /home/shade/jdk-hs/src/hotspot/share/oops/oopHandle.hpp:29:0, from /home/shade/jdk-hs/src/hotspot/share/classfile/classLoaderData.hpp:32, from /home/shade/jdk-hs/src/hotspot/share/oops/instanceKlass.hpp:29, from /home/shade/jdk-hs/src/hotspot/share/runtime/reflectionUtils.hpp:29, from /home/shade/jdk-hs/src/hotspot/share/classfile/systemDictionary.hpp:34, from /home/shade/jdk-hs/src/hotspot/share/utilities/debug.cpp:27: /home/shade/jdk-hs/src/hotspot/share/runtime/atomic.hpp: In instantiation of 'static D Atomic::cmpxchg(T, volatile D*, U, cmpxchg_memory_order) [with T = long long int; D = int; U = int]': /home/shade/jdk-hs/src/hotspot/share/utilities/debug.cpp:735:63: required from here /home/shade/jdk-hs/src/hotspot/share/runtime/atomic.hpp:683:10: error: invalid use of incomplete type 'struct Atomic::CmpxchgImpl<long long int, int, int, void>' return CmpxchgImpl<T, D, U>()(exchange_value, dest, compare_value, order); ^~~~~~~~~~~~~~~~~~~~~~ In file included from /home/shade/jdk-hs/src/hotspot/share/oops/oopHandle.hpp:29:0, from /home/shade/jdk-hs/src/hotspot/share/classfile/classLoaderData.hpp:32, from /home/shade/jdk-hs/src/hotspot/share/oops/instanceKlass.hpp:29, from /home/shade/jdk-hs/src/hotspot/share/runtime/reflectionUtils.hpp:29, from /home/shade/jdk-hs/src/hotspot/share/classfile/systemDictionary.hpp:34, from /home/shade/jdk-hs/src/hotspot/share/utilities/debug.cpp:27: /home/shade/jdk-hs/src/hotspot/share/runtime/atomic.hpp:267:10: note: declaration of 'struct Atomic::CmpxchgImpl<long long int, int, int, void>' struct CmpxchgImpl; ^~~~~~~~~~~ This fixes the build: diff -r 45071514f87a src/hotspot/share/utilities/debug.cpp --- a/src/hotspot/share/utilities/debug.cpp Tue Apr 03 10:27:46 2018 +0200 +++ b/src/hotspot/share/utilities/debug.cpp Tue Apr 03 11:01:58 2018 +0200 @@ -731,7 +731,7 @@ os::protect_memory((char*)g_assert_poison, os::vm_page_size(), os::MEM_PROT_RWX); // Store Context away. if (ucVoid) { - const jlong my_tid = os::current_thread_id(); + const intx my_tid = os::current_thread_id(); if (Atomic::cmpxchg(my_tid, &g_asserting_thread, (intx)0) == 0) { if (store_context(ucVoid)) { g_assertion_context = &g_stored_assertion_context; ...because "jlong" is not "intx" in x86_32. The fix is simple, because os::current_thread_id() actually returns intx!