Commit 5152d978 authored by Jochen Eisinger's avatar Jochen Eisinger Committed by Commit Bot

Add API to create a platform with a tracing controller

BUG=v8:6511

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: Ie6b62df693d3b847837c071e1f985b7ce3b420c8
Reviewed-on: https://chromium-review.googlesource.com/548499Reviewed-by: 's avatarFadi Meawad <fmeawad@chromium.org>
Commit-Queue: Jochen Eisinger <jochen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46227}
parent 3c9ee8f3
...@@ -30,12 +30,15 @@ enum class MessageLoopBehavior : bool { ...@@ -30,12 +30,15 @@ enum class MessageLoopBehavior : bool {
* If |idle_task_support| is enabled then the platform will accept idle * If |idle_task_support| is enabled then the platform will accept idle
* tasks (IdleTasksEnabled will return true) and will rely on the embedder * tasks (IdleTasksEnabled will return true) and will rely on the embedder
* calling v8::platform::RunIdleTasks to process the idle tasks. * calling v8::platform::RunIdleTasks to process the idle tasks.
* If |tracing_controller| is nullptr, the default platform will create a
* v8::platform::TracingController instance and use it.
*/ */
V8_PLATFORM_EXPORT v8::Platform* CreateDefaultPlatform( V8_PLATFORM_EXPORT v8::Platform* CreateDefaultPlatform(
int thread_pool_size = 0, int thread_pool_size = 0,
IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled, IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled,
InProcessStackDumping in_process_stack_dumping = InProcessStackDumping in_process_stack_dumping =
InProcessStackDumping::kEnabled); InProcessStackDumping::kEnabled,
v8::TracingController* tracing_controller = nullptr);
/** /**
* Pumps the message loop for the given isolate. * Pumps the message loop for the given isolate.
......
...@@ -31,13 +31,16 @@ void PrintStackTrace() { ...@@ -31,13 +31,16 @@ void PrintStackTrace() {
v8::Platform* CreateDefaultPlatform( v8::Platform* CreateDefaultPlatform(
int thread_pool_size, IdleTaskSupport idle_task_support, int thread_pool_size, IdleTaskSupport idle_task_support,
InProcessStackDumping in_process_stack_dumping) { InProcessStackDumping in_process_stack_dumping,
v8::TracingController* tracing_controller) {
if (in_process_stack_dumping == InProcessStackDumping::kEnabled) { if (in_process_stack_dumping == InProcessStackDumping::kEnabled) {
v8::base::debug::EnableInProcessStackDumping(); v8::base::debug::EnableInProcessStackDumping();
} }
DefaultPlatform* platform = new DefaultPlatform(idle_task_support); DefaultPlatform* platform = new DefaultPlatform(idle_task_support);
platform->SetThreadPoolSize(thread_pool_size); platform->SetThreadPoolSize(thread_pool_size);
platform->EnsureInitialized(); platform->EnsureInitialized();
if (tracing_controller != nullptr)
platform->SetTracingController(tracing_controller);
return platform; return platform;
} }
...@@ -73,11 +76,6 @@ DefaultPlatform::DefaultPlatform(IdleTaskSupport idle_task_support) ...@@ -73,11 +76,6 @@ DefaultPlatform::DefaultPlatform(IdleTaskSupport idle_task_support)
idle_task_support_(idle_task_support) {} idle_task_support_(idle_task_support) {}
DefaultPlatform::~DefaultPlatform() { DefaultPlatform::~DefaultPlatform() {
if (tracing_controller_) {
tracing_controller_->StopTracing();
tracing_controller_.reset();
}
base::LockGuard<base::Mutex> guard(&lock_); base::LockGuard<base::Mutex> guard(&lock_);
queue_.Terminate(); queue_.Terminate();
if (initialized_) { if (initialized_) {
...@@ -316,7 +314,7 @@ const char* DefaultPlatform::GetCategoryGroupName( ...@@ -316,7 +314,7 @@ const char* DefaultPlatform::GetCategoryGroupName(
} }
void DefaultPlatform::SetTracingController( void DefaultPlatform::SetTracingController(
tracing::TracingController* tracing_controller) { TracingController* tracing_controller) {
tracing_controller_.reset(tracing_controller); tracing_controller_.reset(tracing_controller);
} }
......
...@@ -27,10 +27,6 @@ class TaskQueue; ...@@ -27,10 +27,6 @@ class TaskQueue;
class Thread; class Thread;
class WorkerThread; class WorkerThread;
namespace tracing {
class TracingController;
}
class V8_PLATFORM_EXPORT DefaultPlatform : public NON_EXPORTED_BASE(Platform) { class V8_PLATFORM_EXPORT DefaultPlatform : public NON_EXPORTED_BASE(Platform) {
public: public:
explicit DefaultPlatform( explicit DefaultPlatform(
...@@ -72,7 +68,7 @@ class V8_PLATFORM_EXPORT DefaultPlatform : public NON_EXPORTED_BASE(Platform) { ...@@ -72,7 +68,7 @@ class V8_PLATFORM_EXPORT DefaultPlatform : public NON_EXPORTED_BASE(Platform) {
unsigned int flags) override; unsigned int flags) override;
void UpdateTraceEventDuration(const uint8_t* category_enabled_flag, void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
const char* name, uint64_t handle) override; const char* name, uint64_t handle) override;
void SetTracingController(tracing::TracingController* tracing_controller); void SetTracingController(TracingController* tracing_controller);
void AddTraceStateObserver(TraceStateObserver* observer) override; void AddTraceStateObserver(TraceStateObserver* observer) override;
void RemoveTraceStateObserver(TraceStateObserver* observer) override; void RemoveTraceStateObserver(TraceStateObserver* observer) override;
...@@ -103,7 +99,7 @@ class V8_PLATFORM_EXPORT DefaultPlatform : public NON_EXPORTED_BASE(Platform) { ...@@ -103,7 +99,7 @@ class V8_PLATFORM_EXPORT DefaultPlatform : public NON_EXPORTED_BASE(Platform) {
std::priority_queue<DelayedEntry, std::vector<DelayedEntry>, std::priority_queue<DelayedEntry, std::vector<DelayedEntry>,
std::greater<DelayedEntry> > > std::greater<DelayedEntry> > >
main_thread_delayed_queue_; main_thread_delayed_queue_;
std::unique_ptr<tracing::TracingController> tracing_controller_; std::unique_ptr<TracingController> tracing_controller_;
DISALLOW_COPY_AND_ASSIGN(DefaultPlatform); DISALLOW_COPY_AND_ASSIGN(DefaultPlatform);
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment