diff -r be121cbf3284 -r 23e3cd901cb6 src/hotspot/share/jfr/recorder/checkpoint/jfrMetadataEvent.cpp --- a/src/hotspot/share/jfr/recorder/checkpoint/jfrMetadataEvent.cpp Mon Sep 02 21:08:41 2019 +0200 +++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrMetadataEvent.cpp Tue Sep 03 11:48:31 2019 +0200 @@ -29,11 +29,21 @@ #include "oops/klass.inline.hpp" #include "oops/oop.inline.hpp" #include "oops/typeArrayOop.inline.hpp" +#include "runtime/semaphore.hpp" #include "runtime/thread.inline.hpp" static jbyteArray _metadata_blob = NULL; static u8 metadata_id = 0; static u8 last_written_metadata_id = 0; +static Semaphore metadata_mutex_semaphore(1); + +void JfrMetadataEvent::lock() { + metadata_mutex_semaphore.wait(); +} + +void JfrMetadataEvent::unlock() { + metadata_mutex_semaphore.signal(); +} static void write_metadata_blob(JfrChunkWriter& chunkwriter, jbyteArray metadata_blob) { if (metadata_blob != NULL) {