5#ifndef V8_LOGGING_COUNTERS_SCOPES_H_
6#define V8_LOGGING_COUNTERS_SCOPES_H_
65 int64_t* result_in_microseconds =
nullptr)
68 result_in_microseconds_(result_in_microseconds) {
74 int64_t elapsed = Stop().InMicroseconds();
76 if (result_in_microseconds_) {
77 *result_in_microseconds_ = elapsed;
98 if (mode != OptionalTimedHistogramScopeMode::TAKE_TIME)
return;
104 if (
mode_ != OptionalTimedHistogramScopeMode::TAKE_TIME)
return;
121 result_in_microseconds_(result_in_microseconds) {
126 int64_t elapsed = Stop().InMicroseconds();
127 if (result_in_microseconds_) {
128 *result_in_microseconds_ = elapsed;
134 histogram_ = histogram;
156 previous_scope_ = timed_histogram()->Enter(
this);
158 if (previous_scope_) previous_scope_->Pause(now);
163 timed_histogram()->Leave(previous_scope_);
166 histogram_->AddTimedSample(elapsed);
167 if (
isolate_) RecordLongTaskTime(elapsed);
173 if (previous_scope_) previous_scope_->Resume(now);
177 if (histogram_->Enabled()) StartInteral();
178 LogStart(timed_histogram()->counters()->
isolate());
182 if (histogram_->Enabled()) StopInternal();
183 LogEnd(timed_histogram()->counters()->
isolate());
187 DCHECK(histogram_->Enabled());
192 DCHECK(histogram_->Enabled());
197 if (histogram_ ==
isolate_->counters()->execute()) {
198 isolate_->GetCurrentLongTaskStats()->v8_execute_us +=
216 : histogram_(histogram) {
217 previous_scope_ = histogram_->Enter(
nullptr);
219 previous_scope_->Pause(base::TimeTicks::Now());
223 histogram_->Leave(previous_scope_);
225 previous_scope_->Resume(base::TimeTicks::Now());
230 bool isEnabled()
const {
return previous_scope_ && histogram_->Enabled(); }
TimeDelta Elapsed() const
static constexpr TimeDelta FromMicroseconds(int64_t microseconds)
int64_t InMicroseconds() const
base::TimeDelta StopInternal()
base::ElapsedTimer timer_
V8_INLINE void LogStart(Isolate *isolate)
V8_INLINE void LogEnd(Isolate *isolate)
V8_INLINE base::TimeDelta Stop()
TimedHistogram * histogram_
BaseTimedHistogramScope(TimedHistogram *histogram)
const char * name() const
int64_t * result_in_microseconds_
void set_histogram(TimedHistogram *histogram)
~LazyTimedHistogramScope()
LazyTimedHistogramScope(int64_t *result_in_microseconds)
NestedTimedHistogramScope * previous_scope_
NestedTimedHistogramScope(NestedTimedHistogram *histogram, Isolate *isolate=nullptr)
void Resume(base::TimeTicks now)
friend NestedTimedHistogram
friend PauseNestedTimedHistogramScope
~NestedTimedHistogramScope()
NestedTimedHistogram * timed_histogram()
void RecordLongTaskTime(base::TimeDelta elapsed) const
void Pause(base::TimeTicks now)
DISALLOW_IMPLICIT_CONSTRUCTORS(OptionalTimedHistogramScope)
~OptionalTimedHistogramScope()
const OptionalTimedHistogramScopeMode mode_
OptionalTimedHistogramScope(TimedHistogram *histogram, Isolate *isolate, OptionalTimedHistogramScopeMode mode)
~PauseNestedTimedHistogramScope()
PauseNestedTimedHistogramScope(NestedTimedHistogram *histogram)
NestedTimedHistogramScope * previous_scope_
NestedTimedHistogram * histogram_
DISALLOW_IMPLICIT_CONSTRUCTORS(TimedHistogramScope)
TimedHistogramScope(TimedHistogram *histogram, Isolate *isolate=nullptr, int64_t *result_in_microseconds=nullptr)
int64_t * result_in_microseconds_
V8_EXPORT_PRIVATE void AddTimedSample(base::TimeDelta sample)
static V8_INLINE void CallEventLogger(Isolate *isolate, const char *name, v8::LogEventStatus se, bool expose_to_api)
RecordWriteMode const mode_
base::ElapsedTimer timer_
OptionalTimedHistogramScopeMode
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK(condition)