Hi, the integration of harfbuzz broke our AIX build because there's no implementation available for the hb_atomic macros in hb-atomic-private.hh. I've fixed that locally but still get a crash when running a simple AWT program (even with -Dsun.font.layoutengine=icu).
I'm curretnly debugging the problem, but I have some general questions: 1. Do we really need the multi-threaded features of harfbuzz in OpenJDK? 2. Why does hurbuzz require these synchronization macros? From a first glance it doesn't seem to use multiple threads by itself. Does it have some global data structures which it needs to protect if harfbuzz is called from various threads? 3. Is there a way to test the hurfbuzz engine on a new platform? I saw the new test TestLayoutVsICU.java but it is marked as "manual" and it seems to require external fonts (at least some of which seem to be freely available). Could you please provide at least a minimal description on how this test can be run? 4. Is there a way to test that the implementation of the hb_atomic macros in hb-atomic-private.hh is correct (i.e. a way to stress harfbuzz from multiple threads)? I think this is important as I couldn't find a good description of the requirements for the atomic macros and on weak memory model architectures we should really get this right. For example there's no description of which fences are required around the various atomic operations. Getting this right across all platforms in the HotSpot (see hotspot/src/os_cpu/../vm/atomic_os_cp.inline.hpp) is already hard enough so I'm a little concerned that we are now introducing similar primitives in the class library. Thank you and best regards, Volker