Index: src/log.cc |
diff --git a/src/log.cc b/src/log.cc |
index 3e7677edf1955400cae41889f69e06544b8e7301..155c46b7cb6f5ad3fa25cb065fe2db31422604df 100644 |
--- a/src/log.cc |
+++ b/src/log.cc |
@@ -7,6 +7,7 @@ |
#include <cstdarg> |
#include <sstream> |
+#include "include/v8-profiler.h" |
#include "src/bailout-reason.h" |
#include "src/base/platform/platform.h" |
#include "src/bootstrapper.h" |
@@ -23,6 +24,7 @@ |
#include "src/perf-jit.h" |
#include "src/profiler/cpu-profiler-inl.h" |
#include "src/profiler/profiler-listener.h" |
+#include "src/profiler/simulator-helper.h" |
#include "src/runtime-profiler.h" |
#include "src/string-stream.h" |
#include "src/vm-state-inl.h" |
@@ -645,23 +647,24 @@ 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; |
+ 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(); |
} |
} |
@@ -1383,14 +1386,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) { |
@@ -1398,7 +1402,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(); |
} |