| Index: src/log.cc
|
| diff --git a/src/log.cc b/src/log.cc
|
| index 9f85213c3b7ea206705632a1640c302f62dec836..66b373f12e603748cbf5359e17511c8eeeae8f59 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(v8_isolate, state, TickSample::kIncludeCEntryFrame, true);
|
| + if (sample->pc == nullptr) return;
|
| + sample->timestamp = base::TimeTicks::HighResolutionNow();
|
| + 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();
|
| }
|
|
|