--- a/src/hotspot/share/jfr/recorder/storage/jfrStorage.cpp Tue May 21 13:06:52 2019 -0400
+++ b/src/hotspot/share/jfr/recorder/storage/jfrStorage.cpp Tue May 21 20:53:27 2019 +0200
@@ -339,9 +339,9 @@
void JfrStorage::register_full(BufferPtr buffer, Thread* thread) {
assert(buffer != NULL, "invariant");
assert(buffer->retired(), "invariant");
+ assert(buffer->acquired_by(thread), "invariant");
if (!full_buffer_registration(buffer, _age_mspace, control(), thread)) {
handle_registration_failure(buffer);
- buffer->release();
}
if (control().should_post_buffer_full_message()) {
_post_box.post(MSG_FULLBUFFER);
@@ -376,8 +376,8 @@
}
}
assert(buffer->empty(), "invariant");
+ assert(buffer->identity() != NULL, "invariant");
control().increment_dead();
- buffer->release();
buffer->set_retired();
}
@@ -738,13 +738,14 @@
Scavenger(JfrStorageControl& control, Mspace* mspace) : _control(control), _mspace(mspace), _count(0), _amount(0) {}
bool process(Type* t) {
if (t->retired()) {
+ assert(t->identity() != NULL, "invariant");
+ assert(t->empty(), "invariant");
assert(!t->transient(), "invariant");
assert(!t->lease(), "invariant");
- assert(t->empty(), "invariant");
- assert(t->identity() == NULL, "invariant");
++_count;
_amount += t->total_size();
t->clear_retired();
+ t->release();
_control.decrement_dead();
mspace_release_full_critical(t, _mspace);
}