Index: src/counters-inl.h |
diff --git a/src/counters-inl.h b/src/counters-inl.h |
index 7219ef778a6ea6a06ce25ad457b7a1299c5d7194..c0a6f378902fc1fca30468722671a19d4c1a0020 100644 |
--- a/src/counters-inl.h |
+++ b/src/counters-inl.h |
@@ -10,6 +10,47 @@ |
namespace v8 { |
namespace internal { |
+inline void RuntimeCallTimer::Start(RuntimeCallCounter* counter, |
Igor Sheludko
2016/11/18 09:55:45
Remove inline here and below.
Camillo Bruni
2016/11/18 16:36:48
done.
|
+ RuntimeCallTimer* parent) { |
+ counter_ = counter; |
+ parent_.SetValue(parent); |
+ if (FLAG_runtime_stats != |
+ v8::tracing::TracingCategoryObserver::ENABLED_BY_SAMPLING) { |
+ timer_.Start(); |
+ } |
+} |
+ |
+inline RuntimeCallTimer* RuntimeCallTimer::Stop() { |
+ if (!timer_.IsStarted()) return parent(); |
+ base::TimeDelta delta = timer_.Elapsed(); |
+ timer_.Stop(); |
+ counter_->count++; |
+ counter_->time += delta; |
+ if (parent()) { |
+ // Adjust parent timer so that it does not include sub timer's time. |
+ parent()->Subtract(delta); |
+ } |
+ return parent(); |
+} |
+ |
+inline void RuntimeCallTimer::Subtract(base::TimeDelta delta) { |
+ // Adjust the current timer instead of directly subtracting the sub-timers |
+ // from the current counter. This way we can easily the counter of an active |
+ // timer scope. Otherwise we would end up subtracting the time from the |
+ // previous counter and add the own time to the newly changed counter. |
+ timer_.AdjustBy(-delta); |
+} |
+ |
+inline void RuntimeCallTimer::Elapsed() { |
+ base::TimeDelta delta = timer_.Elapsed(); |
Igor Sheludko
2016/11/18 09:55:45
Maybe it's better to just call a Restart() here in
Camillo Bruni
2016/11/18 16:36:48
good point, implemented this way.
|
+ counter_->time += delta; |
+ if (parent()) { |
+ parent()->counter_->time -= delta; |
Igor Sheludko
2016/11/18 09:55:45
Anyway
parent()->Subtract(delta);
to avoid multi
Camillo Bruni
2016/11/18 16:36:48
done
|
+ parent()->Elapsed(); |
+ } |
+ timer_.Restart(); |
+} |
+ |
RuntimeCallTimerScope::RuntimeCallTimerScope( |
Isolate* isolate, RuntimeCallStats::CounterId counter_id) { |
if (V8_UNLIKELY(FLAG_runtime_stats)) { |