equal
deleted
inserted
replaced
714 LogTarget(Debug, gc, phases, start) log; |
714 LogTarget(Debug, gc, phases, start) log; |
715 log_start(log, true /* thread */); |
715 log_start(log, true /* thread */); |
716 } |
716 } |
717 |
717 |
718 void ZStatSubPhase::register_end(const Ticks& start, const Ticks& end) const { |
718 void ZStatSubPhase::register_end(const Ticks& start, const Ticks& end) const { |
719 ZTracer::tracer()->report_thread_phase(*this, start, end); |
719 ZTracer::tracer()->report_thread_phase(name(), start, end); |
720 |
720 |
721 const Tickspan duration = end - start; |
721 const Tickspan duration = end - start; |
722 ZStatSample(_sampler, duration.value()); |
722 ZStatSample(_sampler, duration.value()); |
723 |
723 |
724 LogTarget(Debug, gc, phases) log; |
724 LogTarget(Debug, gc, phases) log; |
734 LogTarget(Debug, gc, start) log; |
734 LogTarget(Debug, gc, start) log; |
735 log_start(log, true /* thread */); |
735 log_start(log, true /* thread */); |
736 } |
736 } |
737 |
737 |
738 void ZStatCriticalPhase::register_end(const Ticks& start, const Ticks& end) const { |
738 void ZStatCriticalPhase::register_end(const Ticks& start, const Ticks& end) const { |
739 ZTracer::tracer()->report_thread_phase(*this, start, end); |
739 ZTracer::tracer()->report_thread_phase(name(), start, end); |
740 |
740 |
741 const Tickspan duration = end - start; |
741 const Tickspan duration = end - start; |
742 ZStatSample(_sampler, duration.value()); |
742 ZStatSample(_sampler, duration.value()); |
743 ZStatInc(_counter); |
743 ZStatInc(_counter); |
744 |
744 |
757 THREAD_LOCAL uint32_t ZStatTimerDisable::_active = 0; |
757 THREAD_LOCAL uint32_t ZStatTimerDisable::_active = 0; |
758 |
758 |
759 // |
759 // |
760 // Stat sample/inc |
760 // Stat sample/inc |
761 // |
761 // |
762 void ZStatSample(const ZStatSampler& sampler, uint64_t value, bool trace) { |
762 void ZStatSample(const ZStatSampler& sampler, uint64_t value) { |
763 ZStatSamplerData* const cpu_data = sampler.get(); |
763 ZStatSamplerData* const cpu_data = sampler.get(); |
764 Atomic::add(1u, &cpu_data->_nsamples); |
764 Atomic::add(1u, &cpu_data->_nsamples); |
765 Atomic::add(value, &cpu_data->_sum); |
765 Atomic::add(value, &cpu_data->_sum); |
766 |
766 |
767 uint64_t max = cpu_data->_max; |
767 uint64_t max = cpu_data->_max; |
780 |
780 |
781 // Retry |
781 // Retry |
782 max = prev_max; |
782 max = prev_max; |
783 } |
783 } |
784 |
784 |
785 if (trace) { |
785 ZTracer::tracer()->report_stat_sampler(sampler, value); |
786 ZTracer::tracer()->report_stat_sampler(sampler, value); |
786 } |
787 } |
787 |
788 } |
788 void ZStatInc(const ZStatCounter& counter, uint64_t increment) { |
789 |
|
790 void ZStatInc(const ZStatCounter& counter, uint64_t increment, bool trace) { |
|
791 ZStatCounterData* const cpu_data = counter.get(); |
789 ZStatCounterData* const cpu_data = counter.get(); |
792 const uint64_t value = Atomic::add(increment, &cpu_data->_counter); |
790 const uint64_t value = Atomic::add(increment, &cpu_data->_counter); |
793 |
791 |
794 if (trace) { |
792 ZTracer::tracer()->report_stat_counter(counter, increment, value); |
795 ZTracer::tracer()->report_stat_counter(counter, increment, value); |
|
796 } |
|
797 } |
793 } |
798 |
794 |
799 void ZStatInc(const ZStatUnsampledCounter& counter, uint64_t increment) { |
795 void ZStatInc(const ZStatUnsampledCounter& counter, uint64_t increment) { |
800 ZStatCounterData* const cpu_data = counter.get(); |
796 ZStatCounterData* const cpu_data = counter.get(); |
801 Atomic::add(increment, &cpu_data->_counter); |
797 Atomic::add(increment, &cpu_data->_counter); |