--- old/src/hotspot/share/gc/z/zReferenceProcessor.cpp 2018-03-05 15:14:49.983963697 +0100 +++ new/src/hotspot/share/gc/z/zReferenceProcessor.cpp 2018-03-05 15:14:49.815956498 +0100 @@ -43,7 +43,7 @@ _workers(workers), _soft_reference_policy(NULL), _encountered_count(), - _dropped_count(), + _discovered_count(), _enqueued_count(), _discovered_list(NULL), _pending_list(NULL), @@ -180,6 +180,9 @@ 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); @@ -196,9 +199,6 @@ 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); @@ -290,9 +290,9 @@ } } - // Reset dropped - ZPerWorkerIterator iter_dropped(&_dropped_count); - for (Counters* counters; iter_dropped.next(&counters);) { + // Reset discovered + ZPerWorkerIterator iter_discovered(&_discovered_count); + for (Counters* counters; iter_discovered.next(&counters);) { for (int i = REF_SOFT; i <= REF_PHANTOM; i++) { (*counters)[i] = 0; } @@ -309,7 +309,7 @@ void ZReferenceProcessor::collect_statistics() { Counters encountered = {}; - Counters dropped = {}; + Counters discovered = {}; Counters enqueued = {}; // Sum encountered @@ -320,11 +320,11 @@ } } - // Sum dropped - ZPerWorkerConstIterator iter_dropped(&_dropped_count); - for (const Counters* counters; iter_dropped.next(&counters);) { + // Sum discovered + ZPerWorkerConstIterator 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]; } } @@ -337,16 +337,16 @@ } // 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); } --- old/src/hotspot/share/gc/z/zReferenceProcessor.hpp 2018-03-05 15:14:50.278976338 +0100 +++ new/src/hotspot/share/gc/z/zReferenceProcessor.hpp 2018-03-05 15:14:50.111969182 +0100 @@ -39,7 +39,7 @@ ZWorkers* const _workers; ReferencePolicy* _soft_reference_policy; ZPerWorker _encountered_count; - ZPerWorker _dropped_count; + ZPerWorker _discovered_count; ZPerWorker _enqueued_count; ZPerWorker _discovered_list; ZContended _pending_list; --- old/src/hotspot/share/gc/z/zStat.cpp 2018-03-05 15:14:50.563988551 +0100 +++ new/src/hotspot/share/gc/z/zStat.cpp 2018-03-05 15:14:50.395981352 +0100 @@ -1134,39 +1134,36 @@ ZStatReferences::ZCount ZStatReferences::_final; ZStatReferences::ZCount ZStatReferences::_phantom; -void ZStatReferences::set(ZCount* count, size_t encountered, size_t dropped, size_t enqueued) { +void ZStatReferences::set(ZCount* count, size_t encountered, size_t discovered, size_t enqueued) { count->encountered = encountered; - count->discovered = dropped + enqueued; - count->dropped = dropped; + count->discovered = discovered; count->enqueued = enqueued; } -void ZStatReferences::set_soft(size_t encountered, size_t dropped, size_t enqueued) { - set(&_soft, encountered, dropped, enqueued); +void ZStatReferences::set_soft(size_t encountered, size_t discovered, size_t enqueued) { + set(&_soft, encountered, discovered, enqueued); } -void ZStatReferences::set_weak(size_t encountered, size_t dropped, size_t enqueued) { - set(&_weak, encountered, dropped, enqueued); +void ZStatReferences::set_weak(size_t encountered, size_t discovered, size_t enqueued) { + set(&_weak, encountered, discovered, enqueued); } -void ZStatReferences::set_final(size_t encountered, size_t dropped, size_t enqueued) { - set(&_final, encountered, dropped, enqueued); +void ZStatReferences::set_final(size_t encountered, size_t discovered, size_t enqueued) { + set(&_final, encountered, discovered, enqueued); } -void ZStatReferences::set_phantom(size_t encountered, size_t dropped, size_t enqueued) { - set(&_phantom, encountered, dropped, enqueued); +void ZStatReferences::set_phantom(size_t encountered, size_t discovered, size_t enqueued) { + set(&_phantom, encountered, discovered, enqueued); } void ZStatReferences::print(const char* name, const ZStatReferences::ZCount& ref) { log_info(gc, ref)("%s: " SIZE_FORMAT " encountered, " SIZE_FORMAT " discovered, " - SIZE_FORMAT " dropped, " SIZE_FORMAT " enqueued", name, ref.encountered, ref.discovered, - ref.dropped, ref.enqueued); } --- old/src/hotspot/share/gc/z/zStat.hpp 2018-03-05 15:14:50.873001792 +0100 +++ new/src/hotspot/share/gc/z/zStat.hpp 2018-03-05 15:14:50.701994465 +0100 @@ -414,18 +414,17 @@ static struct ZCount { size_t encountered; size_t discovered; - size_t dropped; size_t enqueued; } _soft, _weak, _final, _phantom; - static void set(ZCount* count, size_t encountered, size_t dropped, size_t enqueued); + static void set(ZCount* count, size_t encountered, size_t discovered, size_t enqueued); static void print(const char* name, const ZCount& ref); public: - static void set_soft(size_t encountered, size_t dropped, size_t enqueued); - static void set_weak(size_t encountered, size_t dropped, size_t enqueued); - static void set_final(size_t encountered, size_t dropped, size_t enqueued); - static void set_phantom(size_t encountered, size_t dropped, size_t enqueued); + static void set_soft(size_t encountered, size_t discovered, size_t enqueued); + static void set_weak(size_t encountered, size_t discovered, size_t enqueued); + static void set_final(size_t encountered, size_t discovered, size_t enqueued); + static void set_phantom(size_t encountered, size_t discovered, size_t enqueued); static void print(); };