RFR (XXS): 8067865 : Changes 8066780/8066782 broke the non-PCH build

Volker Simonis volker.simonis at gmail.com
Thu Dec 18 16:31:26 UTC 2014


could sombody please review and sponsor this little change which fixes
the build on AIX after 8066780/8066782:


Here's the full story: 8066780/8066782 did some code refactoring and
introduced the new files cardGeneration.{hpp,cpp,inline.hpp}.
Unfortunately, the changes forgot to include cardGeneration.inline.hpp
into tenuredGeneration.cpp and concurrentMarkSweepGeneration.cpp which
use the methods defined therein.

This problem doesn't show up on Linux (even if build with
'--disable-precompiled-headers') because for some reason GCC places
weak references of the corresponding symbols in cardGeneration.o. So
later when linking libjvm.so the references can still be resolved. Sun
Studio also places global instantiations of the corresponding inline
functions into cardGeneration.o so we don't see any problems there as

xlC on AIX only puts a locally visible reference of the neede inline
functions into cardGeneration.o if he can't inline them (which is
perfectly legal because they are declared 'inline'). However, later
one during linking no globally visible versions of the corresponding
inline functions can be found and the link fails.

The final fix is trivial - just include the corresponding
cardGeneration.inline.hpp file into the .cpp files which require its
method definitions.

Thank you and best regards,

More information about the hotspot-dev mailing list