Chromium Code Reviews| Index: src/log.cc |
| diff --git a/src/log.cc b/src/log.cc |
| index 9f85213c3b7ea206705632a1640c302f62dec836..7c6f06f16d3651b5d9fe059a5c4a342570c04c2d 100644 |
| --- a/src/log.cc |
| +++ b/src/log.cc |
| @@ -23,6 +23,7 @@ |
| #include "src/perf-jit.h" |
| #include "src/profiler/cpu-profiler-inl.h" |
| #include "src/profiler/profiler-listener.h" |
| +#include "src/profiler/tick-sample.h" |
| #include "src/runtime-profiler.h" |
| #include "src/string-stream.h" |
| #include "src/vm-state-inl.h" |
| @@ -645,23 +646,25 @@ class Ticker: public sampler::Sampler { |
| void SampleStack(const v8::RegisterState& state) override { |
| v8::Isolate* v8_isolate = isolate(); |
| - Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); |
| + Isolate* i_isolate = reinterpret_cast<Isolate*>(v8_isolate); |
| #if defined(USE_SIMULATOR) |
| - if (!SimulatorHelper::FillRegisters(isolate, |
| + if (!SimulatorHelper::FillRegisters(i_isolate, |
| const_cast<v8::RegisterState*>(&state))) |
| return; |
| #endif |
| - TickSample* sample = isolate->cpu_profiler()->StartTickSample(); |
| + TickSample* sample = i_isolate->cpu_profiler()->StartTickSample(); |
| TickSample sample_obj; |
| if (sample == NULL) sample = &sample_obj; |
| - sample->Init(isolate, state, TickSample::kIncludeCEntryFrame, true); |
| - if (is_counting_samples_ && !sample->timestamp.IsNull()) { |
| + sample->Init(i_isolate, state, TickSample::kIncludeCEntryFrame, true); |
| + if (sample->pc == nullptr) return; |
| + sample->timestamp = base::TimeTicks::HighResolutionNow(); |
|
alph
2016/07/01 01:08:57
not needed?
lpy
2016/07/01 17:33:38
Done.
|
| + if (is_counting_samples_) { |
| if (sample->state == JS) ++js_sample_count_; |
| if (sample->state == EXTERNAL) ++external_sample_count_; |
| } |
| if (profiler_) profiler_->Insert(sample); |
| if (sample != &sample_obj) { |
| - isolate->cpu_profiler()->FinishTickSample(); |
| + i_isolate->cpu_profiler()->FinishTickSample(); |
| } |
| } |
| @@ -1381,14 +1384,15 @@ void Logger::TickEvent(TickSample* sample, bool overflow) { |
| } |
| Log::MessageBuilder msg(log_); |
| msg.Append("%s,", kLogEventsNames[CodeEventListener::TICK_EVENT]); |
| - msg.AppendAddress(sample->pc); |
| + msg.AppendAddress(reinterpret_cast<Address>(sample->pc)); |
| msg.Append(",%d", static_cast<int>(timer_.Elapsed().InMicroseconds())); |
| if (sample->has_external_callback) { |
| msg.Append(",1,"); |
| - msg.AppendAddress(sample->external_callback_entry); |
| + msg.AppendAddress( |
| + reinterpret_cast<Address>(sample->external_callback_entry)); |
| } else { |
| msg.Append(",0,"); |
| - msg.AppendAddress(sample->tos); |
| + msg.AppendAddress(reinterpret_cast<Address>(sample->tos)); |
| } |
| msg.Append(",%d", static_cast<int>(sample->state)); |
| if (overflow) { |
| @@ -1396,7 +1400,7 @@ void Logger::TickEvent(TickSample* sample, bool overflow) { |
| } |
| for (unsigned i = 0; i < sample->frames_count; ++i) { |
| msg.Append(','); |
| - msg.AppendAddress(sample->stack[i]); |
| + msg.AppendAddress(reinterpret_cast<Address>(sample->stack[i])); |
| } |
| msg.WriteToLogFile(); |
| } |