< prev index next >
src/hotspot/share/gc/z/zReferenceProcessor.cpp
Print this page
@@ -41,11 +41,11 @@
ZReferenceProcessor::ZReferenceProcessor(ZWorkers* workers) :
_workers(workers),
_soft_reference_policy(NULL),
_encountered_count(),
- _dropped_count(),
+ _discovered_count(),
_enqueued_count(),
_discovered_list(NULL),
_pending_list(NULL),
_pending_list_tail(_pending_list.addr()) {}
@@ -178,10 +178,13 @@
}
void ZReferenceProcessor::discover(oop obj, ReferenceType type) {
log_trace(gc, ref)("Discovered Reference: " PTR_FORMAT " (%s)", p2i(obj), ReferenceTypeName[type]);
+ // Update statistics
+ _discovered_count.get()[type]++;
+
// Mark referent finalizable
if (should_mark_referent(type)) {
oop* const referent_addr = (oop*)java_lang_ref_Reference::referent_addr(obj);
ZBarrier::mark_barrier_on_oop_field(referent_addr, true /* finalizable */);
}
@@ -194,13 +197,10 @@
}
oop ZReferenceProcessor::drop(oop obj, ReferenceType type) {
log_trace(gc, ref)("Dropped Reference: " PTR_FORMAT " (%s)", p2i(obj), ReferenceTypeName[type]);
- // Update statistics
- _dropped_count.get()[type]++;
-
// Keep referent alive
keep_referent_alive(obj, type);
// Unlink and return next in list
const oop next = java_lang_ref_Reference::discovered(obj);
@@ -288,13 +288,13 @@
for (int i = REF_SOFT; i <= REF_PHANTOM; i++) {
(*counters)[i] = 0;
}
}
- // Reset dropped
- ZPerWorkerIterator<Counters> iter_dropped(&_dropped_count);
- for (Counters* counters; iter_dropped.next(&counters);) {
+ // Reset discovered
+ ZPerWorkerIterator<Counters> iter_discovered(&_discovered_count);
+ for (Counters* counters; iter_discovered.next(&counters);) {
for (int i = REF_SOFT; i <= REF_PHANTOM; i++) {
(*counters)[i] = 0;
}
}
@@ -307,26 +307,26 @@
}
}
void ZReferenceProcessor::collect_statistics() {
Counters encountered = {};
- Counters dropped = {};
+ Counters discovered = {};
Counters enqueued = {};
// Sum encountered
ZPerWorkerConstIterator<Counters> iter_encountered(&_encountered_count);
for (const Counters* counters; iter_encountered.next(&counters);) {
for (int i = REF_SOFT; i <= REF_PHANTOM; i++) {
encountered[i] += (*counters)[i];
}
}
- // Sum dropped
- ZPerWorkerConstIterator<Counters> iter_dropped(&_dropped_count);
- for (const Counters* counters; iter_dropped.next(&counters);) {
+ // Sum discovered
+ ZPerWorkerConstIterator<Counters> iter_discovered(&_discovered_count);
+ for (const Counters* counters; iter_discovered.next(&counters);) {
for (int i = REF_SOFT; i <= REF_PHANTOM; i++) {
- dropped[i] += (*counters)[i];
+ discovered[i] += (*counters)[i];
}
}
// Sum enqueued
ZPerWorkerConstIterator<Counters> iter_enqueued(&_enqueued_count);
@@ -335,20 +335,20 @@
enqueued[i] += (*counters)[i];
}
}
// Update statistics
- ZStatReferences::set_soft(encountered[REF_SOFT], dropped[REF_SOFT], enqueued[REF_SOFT]);
- ZStatReferences::set_weak(encountered[REF_WEAK], dropped[REF_WEAK], enqueued[REF_WEAK]);
- ZStatReferences::set_final(encountered[REF_FINAL], dropped[REF_FINAL], enqueued[REF_FINAL]);
- ZStatReferences::set_phantom(encountered[REF_PHANTOM], dropped[REF_PHANTOM], enqueued[REF_PHANTOM]);
+ ZStatReferences::set_soft(encountered[REF_SOFT], discovered[REF_SOFT], enqueued[REF_SOFT]);
+ ZStatReferences::set_weak(encountered[REF_WEAK], discovered[REF_WEAK], enqueued[REF_WEAK]);
+ ZStatReferences::set_final(encountered[REF_FINAL], discovered[REF_FINAL], enqueued[REF_FINAL]);
+ ZStatReferences::set_phantom(encountered[REF_PHANTOM], discovered[REF_PHANTOM], enqueued[REF_PHANTOM]);
// Trace statistics
- const ReferenceProcessorStats stats(dropped[REF_SOFT] + enqueued[REF_SOFT],
- dropped[REF_WEAK] + enqueued[REF_WEAK],
- dropped[REF_FINAL] + enqueued[REF_FINAL],
- dropped[REF_PHANTOM] + enqueued[REF_PHANTOM]);
+ const ReferenceProcessorStats stats(discovered[REF_SOFT],
+ discovered[REF_WEAK],
+ discovered[REF_FINAL],
+ discovered[REF_PHANTOM]);
ZTracer::tracer()->report_gc_reference_stats(stats);
}
class ZReferenceProcessorTask : public ZTask {
private:
< prev index next >