diff -r a5f5e680ea32 -r ec7d6d8effc7 src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.hpp --- a/src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.hpp Tue May 21 13:06:52 2019 -0400 +++ b/src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.hpp Tue May 21 20:53:27 2019 +0200 @@ -92,7 +92,6 @@ size_t processed() const { return ConcurrentWriteOp::processed(); } }; - template class MutexedWriteOp { private: @@ -104,6 +103,15 @@ size_t processed() const { return _operation.processed(); } }; +template +class ExclusiveOp : private MutexedWriteOp { + public: + typedef typename Operation::Type Type; + ExclusiveOp(Operation& operation) : MutexedWriteOp(operation) {} + bool process(Type* t); + size_t processed() const { return MutexedWriteOp::processed(); } +}; + enum jfr_operation_mode { mutexed = 1, concurrent