Index: test/cctest/profiler-extension.cc |
diff --git a/test/cctest/profiler-extension.cc b/test/cctest/profiler-extension.cc |
index 024cc9c635a3d1b97d9c474a004b866e8598507b..38008685146265bda64f65a10a47185ba776eee4 100644 |
--- a/test/cctest/profiler-extension.cc |
+++ b/test/cctest/profiler-extension.cc |
@@ -33,7 +33,18 @@ |
namespace v8 { |
namespace internal { |
-v8::CpuProfile* ProfilerExtension::last_profile = NULL; |
+ProfilerExtension::Scope::Scope(v8::Isolate* isolate) { |
+ DCHECK(!profiler_); |
+ profiler_ = v8::CpuProfiler::New(isolate); |
+} |
+ |
+ProfilerExtension::Scope::~Scope() { |
+ profiler_->Dispose(); |
+ profiler_ = nullptr; |
+} |
+ |
+v8::CpuProfiler* ProfilerExtension::Scope::profiler_ = nullptr; |
+v8::CpuProfile* ProfilerExtension::last_profile = nullptr; |
const char* ProfilerExtension::kSource = |
"native function startProfiling();" |
"native function stopProfiling();" |
@@ -58,24 +69,22 @@ v8::Local<v8::FunctionTemplate> ProfilerExtension::GetNativeFunctionTemplate( |
void ProfilerExtension::StartProfiling( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
- last_profile = NULL; |
- v8::CpuProfiler* cpu_profiler = args.GetIsolate()->GetCpuProfiler(); |
- cpu_profiler->StartProfiling((args.Length() > 0) |
- ? args[0].As<v8::String>() |
- : v8::String::Empty(args.GetIsolate())); |
+ last_profile = nullptr; |
+ Scope::profiler_->StartProfiling((args.Length() > 0) |
+ ? args[0].As<v8::String>() |
+ : v8::String::Empty(args.GetIsolate())); |
} |
void ProfilerExtension::StopProfiling( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
- v8::CpuProfiler* cpu_profiler = args.GetIsolate()->GetCpuProfiler(); |
- last_profile = cpu_profiler->StopProfiling((args.Length() > 0) |
- ? args[0].As<v8::String>() |
- : v8::String::Empty(args.GetIsolate())); |
+ last_profile = Scope::profiler_->StopProfiling( |
+ (args.Length() > 0) ? args[0].As<v8::String>() |
+ : v8::String::Empty(args.GetIsolate())); |
} |
void ProfilerExtension::CollectSample( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
- args.GetIsolate()->GetCpuProfiler()->CollectSample(); |
+ Scope::profiler_->CollectSample(); |
} |
} // namespace internal |