Fix DevTools CPU profiler after isolates merge.

There was an obvious bug with missing call to SamplerRegistry::GetState.
I've also updated CpuProfiler to avoid stopping sampler, if it didn't started it.

R=vitalyr@chromium.org
BUG=none
TEST=none

Review URL: http://codereview.chromium.org/6712062

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 12615106
......@@ -441,6 +441,7 @@ CpuProfiler::CpuProfiler()
token_enumerator_(new TokenEnumerator()),
generator_(NULL),
processor_(NULL),
need_to_stop_sampler_(false),
is_profiling_(false) {
}
......@@ -486,7 +487,10 @@ void CpuProfiler::StartProcessorIfNotStarted() {
}
// Enable stack sampling.
Sampler* sampler = reinterpret_cast<Sampler*>(LOGGER->ticker_);
if (!sampler->IsActive()) sampler->Start();
if (!sampler->IsActive()) {
sampler->Start();
need_to_stop_sampler_ = true;
}
sampler->IncreaseProfilingDepth();
}
}
......@@ -520,7 +524,10 @@ void CpuProfiler::StopProcessorIfLastProfile(const char* title) {
if (profiles_->IsLastProfile(title)) {
Sampler* sampler = reinterpret_cast<Sampler*>(LOGGER->ticker_);
sampler->DecreaseProfilingDepth();
sampler->Stop();
if (need_to_stop_sampler_) {
sampler->Stop();
need_to_stop_sampler_ = false;
}
processor_->Stop();
processor_->Join();
delete processor_;
......
......@@ -283,6 +283,7 @@ class CpuProfiler {
ProfileGenerator* generator_;
ProfilerEventsProcessor* processor_;
int saved_logging_nesting_;
bool need_to_stop_sampler_;
Atomic32 is_profiling_;
#else
......
......@@ -927,8 +927,9 @@ class SignalSender : public Thread {
// Implement Thread::Run().
virtual void Run() {
SamplerRegistry::State state = SamplerRegistry::GetState();
while (state != SamplerRegistry::HAS_NO_SAMPLERS) {
SamplerRegistry::State state;
while ((state = SamplerRegistry::GetState()) !=
SamplerRegistry::HAS_NO_SAMPLERS) {
bool cpu_profiling_enabled =
(state == SamplerRegistry::HAS_CPU_PROFILING_SAMPLERS);
bool runtime_profiler_enabled = RuntimeProfiler::IsEnabled();
......
......@@ -663,8 +663,9 @@ class SamplerThread : public Thread {
// Implement Thread::Run().
virtual void Run() {
SamplerRegistry::State state = SamplerRegistry::GetState();
while (state != SamplerRegistry::HAS_NO_SAMPLERS) {
SamplerRegistry::State state;
while ((state = SamplerRegistry::GetState()) !=
SamplerRegistry::HAS_NO_SAMPLERS) {
bool cpu_profiling_enabled =
(state == SamplerRegistry::HAS_CPU_PROFILING_SAMPLERS);
bool runtime_profiler_enabled = RuntimeProfiler::IsEnabled();
......@@ -684,7 +685,6 @@ class SamplerThread : public Thread {
}
}
OS::Sleep(interval_);
state = SamplerRegistry::GetState();
}
}
......
......@@ -1914,8 +1914,9 @@ class SamplerThread : public Thread {
// Implement Thread::Run().
virtual void Run() {
SamplerRegistry::State state = SamplerRegistry::GetState();
while (state != SamplerRegistry::HAS_NO_SAMPLERS) {
SamplerRegistry::State state;
while ((state = SamplerRegistry::GetState()) !=
SamplerRegistry::HAS_NO_SAMPLERS) {
bool cpu_profiling_enabled =
(state == SamplerRegistry::HAS_CPU_PROFILING_SAMPLERS);
bool runtime_profiler_enabled = RuntimeProfiler::IsEnabled();
......
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