< prev index next >
src/share/vm/runtime/sweeper.cpp
Print this page
rev 8957 : 8223147: JFR Backport
8199712: Flight Recorder
8203346: JFR: Inconsistent signature of jfr_add_string_constant
8195817: JFR.stop should require name of recording
8195818: JFR.start should increase autogenerated name by one
8195819: Remove recording=x from jcmd JFR.check output
8203921: JFR thread sampling is missing fixes from JDK-8194552
8203929: Limit amount of data for JFR.dump
8203664: JFR start failure after AppCDS archive created with JFR StartFlightRecording
8003209: JFR events for network utilization
8207392: [PPC64] Implement JFR profiling
@@ -26,23 +26,23 @@
#include "code/codeCache.hpp"
#include "code/compiledIC.hpp"
#include "code/icBuffer.hpp"
#include "code/nmethod.hpp"
#include "compiler/compileBroker.hpp"
+#include "jfr/jfrEvents.hpp"
#include "memory/resourceArea.hpp"
#include "oops/method.hpp"
#include "runtime/atomic.hpp"
#include "runtime/compilationPolicy.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/orderAccess.inline.hpp"
#include "runtime/os.hpp"
#include "runtime/sweeper.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/vm_operations.hpp"
-#include "trace/tracing.hpp"
#include "utilities/events.hpp"
-#include "utilities/ticks.inline.hpp"
+#include "utilities/ticks.hpp"
#include "utilities/xmlstream.hpp"
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
#ifdef ASSERT
@@ -316,10 +316,28 @@
// Release work, because another compiler thread could continue.
OrderAccess::release_store((int*)&_sweep_started, 0);
}
}
+static void post_sweep_event(EventSweepCodeCache* event,
+ const Ticks& start,
+ const Ticks& end,
+ s4 traversals,
+ int swept,
+ int flushed,
+ int zombified) {
+ assert(event != NULL, "invariant");
+ assert(event->should_commit(), "invariant");
+ event->set_starttime(start);
+ event->set_endtime(end);
+ event->set_sweepId(traversals);
+ event->set_sweptCount(swept);
+ event->set_flushedCount(flushed);
+ event->set_zombifiedCount(zombified);
+ event->commit();
+}
+
void NMethodSweeper::sweep_code_cache() {
ResourceMark rm;
Ticks sweep_start_counter = Ticks::now();
_flushed_count = 0;
@@ -392,19 +410,11 @@
_total_flushed_size += freed_memory;
_total_nof_methods_reclaimed += _flushed_count;
EventSweepCodeCache event(UNTIMED);
if (event.should_commit()) {
- event.set_starttime(sweep_start_counter);
- event.set_endtime(sweep_end_counter);
- event.set_sweepIndex(_traversals);
- event.set_sweepFractionIndex(NmethodSweepFraction - _sweep_fractions_left + 1);
- event.set_sweptCount(swept_count);
- event.set_flushedCount(_flushed_count);
- event.set_markedCount(_marked_for_reclamation_count);
- event.set_zombifiedCount(_zombified_count);
- event.commit();
+ post_sweep_event(&event, sweep_start_counter, sweep_end_counter, (s4)_traversals, swept_count, _flushed_count, _zombified_count);
}
#ifdef ASSERT
if(PrintMethodFlushing) {
tty->print_cr("### sweeper: sweep time(%d): "
< prev index next >