src/hotspot/share/jfr/recorder/storage/jfrStorageControl.cpp
changeset 50234 6ba3e32a9882
parent 50113 caf115bb98ad
child 50429 83aec1d357d4
--- a/src/hotspot/share/jfr/recorder/storage/jfrStorageControl.cpp	Wed May 23 09:43:41 2018 +0200
+++ b/src/hotspot/share/jfr/recorder/storage/jfrStorageControl.cpp	Wed May 23 15:21:54 2018 +0200
@@ -25,6 +25,7 @@
 #include "precompiled.hpp"
 #include "jfr/recorder/storage/jfrStorageControl.hpp"
 #include "runtime/atomic.hpp"
+#include "runtime/mutexLocker.hpp"
 #include "runtime/orderAccess.inline.hpp"
 
 // returns the updated value
@@ -69,22 +70,25 @@
   _to_disk = enable;
 }
 
-// concurrent with lax requirement
-
 size_t JfrStorageControl::full_count() const {
   return _full_count;
 }
 
+// mutexed access
 size_t JfrStorageControl::increment_full() {
-  return atomic_add(1, &_full_count);
+  assert(JfrBuffer_lock->owned_by_self(), "invariant");
+  return ++_full_count;
 }
 
 size_t JfrStorageControl::decrement_full() {
-  return atomic_dec(&_full_count);
+  assert(JfrBuffer_lock->owned_by_self(), "invariant");
+  assert(_full_count > 0, "invariant");
+  return --_full_count;
 }
 
 void JfrStorageControl::reset_full() {
-  Atomic::store((size_t)0, &_full_count);
+  assert(JfrBuffer_lock->owned_by_self(), "invariant");
+  _full_count = 0;
 }
 
 bool JfrStorageControl::should_post_buffer_full_message() const {