src/hotspot/share/jfr/recorder/checkpoint/jfrMetadataEvent.cpp
branchJEP-349-branch
changeset 57987 23e3cd901cb6
parent 57360 5d043a159d5c
child 58049 10ecdb5d3574
equal deleted inserted replaced
57985:be121cbf3284 57987:23e3cd901cb6
    27 #include "jfr/recorder/checkpoint/jfrMetadataEvent.hpp"
    27 #include "jfr/recorder/checkpoint/jfrMetadataEvent.hpp"
    28 #include "jfr/recorder/repository/jfrChunkWriter.hpp"
    28 #include "jfr/recorder/repository/jfrChunkWriter.hpp"
    29 #include "oops/klass.inline.hpp"
    29 #include "oops/klass.inline.hpp"
    30 #include "oops/oop.inline.hpp"
    30 #include "oops/oop.inline.hpp"
    31 #include "oops/typeArrayOop.inline.hpp"
    31 #include "oops/typeArrayOop.inline.hpp"
       
    32 #include "runtime/semaphore.hpp"
    32 #include "runtime/thread.inline.hpp"
    33 #include "runtime/thread.inline.hpp"
    33 
    34 
    34 static jbyteArray _metadata_blob = NULL;
    35 static jbyteArray _metadata_blob = NULL;
    35 static u8 metadata_id = 0;
    36 static u8 metadata_id = 0;
    36 static u8 last_written_metadata_id = 0;
    37 static u8 last_written_metadata_id = 0;
       
    38 static Semaphore metadata_mutex_semaphore(1);
       
    39 
       
    40 void JfrMetadataEvent::lock() {
       
    41   metadata_mutex_semaphore.wait();
       
    42 }
       
    43 
       
    44 void JfrMetadataEvent::unlock() {
       
    45   metadata_mutex_semaphore.signal();
       
    46 }
    37 
    47 
    38 static void write_metadata_blob(JfrChunkWriter& chunkwriter, jbyteArray metadata_blob) {
    48 static void write_metadata_blob(JfrChunkWriter& chunkwriter, jbyteArray metadata_blob) {
    39   if (metadata_blob != NULL) {
    49   if (metadata_blob != NULL) {
    40     const typeArrayOop arr = (typeArrayOop)JfrJavaSupport::resolve_non_null(metadata_blob);
    50     const typeArrayOop arr = (typeArrayOop)JfrJavaSupport::resolve_non_null(metadata_blob);
    41     assert(arr != NULL, "invariant");
    51     assert(arr != NULL, "invariant");