v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
metrics.cc
Go to the documentation of this file.
1// Copyright 2020 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
8
9namespace v8 {
10namespace internal {
11namespace metrics {
12
13class Recorder::Task : public v8::Task {
14 public:
15 explicit Task(const std::shared_ptr<Recorder>& recorder)
16 : recorder_(recorder) {}
17
18 void Run() override {
19 std::queue<std::unique_ptr<Recorder::DelayedEventBase>> delayed_events;
20 {
21 base::MutexGuard lock_scope(&recorder_->lock_);
22 delayed_events.swap(recorder_->delayed_events_);
23 }
24 while (!delayed_events.empty()) {
25 delayed_events.front()->Run(recorder_);
26 delayed_events.pop();
27 }
28 }
29
30 private:
31 std::shared_ptr<Recorder> recorder_;
32};
33
35 Isolate* isolate,
36 const std::shared_ptr<v8::metrics::Recorder>& embedder_recorder) {
38 reinterpret_cast<v8::Isolate*>(isolate));
40 embedder_recorder_ = embedder_recorder;
41}
42
44
50
51void Recorder::Delay(std::unique_ptr<Recorder::DelayedEventBase>&& event) {
52 base::MutexGuard lock_scope(&lock_);
53 bool was_empty = delayed_events_.empty();
54 delayed_events_.push(std::move(event));
55 if (was_empty) {
57 std::make_unique<Task>(shared_from_this()), 1.0);
58 }
59}
60
61} // namespace metrics
62} // namespace internal
63} // namespace v8
std::shared_ptr< v8::TaskRunner > GetForegroundTaskRunner(Isolate *isolate)
void PostDelayedTask(std::unique_ptr< Task > task, double delay_in_seconds, const SourceLocation &location=SourceLocation::Current())
static V8_EXPORT_PRIVATE v8::Platform * GetCurrentPlatform()
Definition v8.cc:282
std::shared_ptr< Recorder > recorder_
Definition metrics.cc:31
Task(const std::shared_ptr< Recorder > &recorder)
Definition metrics.cc:15
V8_EXPORT_PRIVATE void Delay(std::unique_ptr< Recorder::DelayedEventBase > &&event)
Definition metrics.cc:51
V8_EXPORT_PRIVATE void SetEmbedderRecorder(Isolate *isolate, const std::shared_ptr< v8::metrics::Recorder > &embedder_recorder)
Definition metrics.cc:34
V8_EXPORT_PRIVATE bool HasEmbedderRecorder() const
Definition metrics.cc:43
std::queue< std::unique_ptr< DelayedEventBase > > delayed_events_
Definition metrics.h:83
std::shared_ptr< v8::TaskRunner > foreground_task_runner_
Definition metrics.h:81
std::shared_ptr< v8::metrics::Recorder > embedder_recorder_
Definition metrics.h:82
V8_EXPORT_PRIVATE void NotifyIsolateDisposal()
Definition metrics.cc:45
virtual void NotifyIsolateDisposal()
Definition v8-metrics.h:238
#define CHECK_NULL(val)