5#ifndef V8_LOGGING_METRICS_H_
6#define V8_LOGGING_METRICS_H_
23class Recorder :
public std::enable_shared_from_this<Recorder> {
27 const std::shared_ptr<v8::metrics::Recorder>& embedder_recorder);
57 virtual void Run(
const std::shared_ptr<Recorder>& recorder) = 0;
66 void Run(
const std::shared_ptr<Recorder>& recorder)
override {
67 recorder->AddMainThreadEvent(
event_,
id_);
78 std::unique_ptr<Recorder::DelayedEventBase>&& event);
90 explicit TimedScope(T* event) : event_(event) { Start(); }
98 event_->wall_clock_duration_in_us = (duration.*
precision)();
int64_t InMicroseconds() const
virtual void Run(const std::shared_ptr< Recorder > &recorder)=0
virtual ~DelayedEventBase()=default
v8::metrics::Recorder::ContextId id_
void Run(const std::shared_ptr< Recorder > &recorder) override
DelayedEvent(const T &event, v8::metrics::Recorder::ContextId id)
void AddThreadSafeEvent(const T &event)
V8_EXPORT_PRIVATE void Delay(std::unique_ptr< Recorder::DelayedEventBase > &&event)
V8_EXPORT_PRIVATE void SetEmbedderRecorder(Isolate *isolate, const std::shared_ptr< v8::metrics::Recorder > &embedder_recorder)
V8_EXPORT_PRIVATE bool HasEmbedderRecorder() const
std::queue< std::unique_ptr< DelayedEventBase > > delayed_events_
std::shared_ptr< v8::TaskRunner > foreground_task_runner_
std::shared_ptr< v8::metrics::Recorder > embedder_recorder_
V8_EXPORT_PRIVATE void NotifyIsolateDisposal()
void DelayMainThreadEvent(const T &event, v8::metrics::Recorder::ContextId id)
void AddMainThreadEvent(const T &event, v8::metrics::Recorder::ContextId id)
base::TimeTicks start_time_
base::TimeTicks start_time_
v8::TaskRunner TaskRunner
#define V8_EXPORT_PRIVATE