Make use of v8::TickSample instead of v8::internal::TickSample in logger.
BUG=v8:4789 Committed: https://crrev.com/c3a16f0a9f0976411ee25df627534be5f6955c32 Review-Url: https://codereview.chromium.org/2133533002 Cr-Original-Commit-Position: refs/heads/master@{#37618} Cr-Commit-Position: refs/heads/master@{#37660}
This commit is contained in:
parent
0ac774095f
commit
69fd22da2a
40
src/log.cc
40
src/log.cc
@ -21,7 +21,6 @@
|
||||
#include "src/log-utils.h"
|
||||
#include "src/macro-assembler.h"
|
||||
#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"
|
||||
@ -31,7 +30,6 @@
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
|
||||
#define DECLARE_EVENT(ignore1, name) name,
|
||||
static const char* kLogEventsNames[CodeEventListener::NUMBER_OF_LOG_EVENTS] = {
|
||||
LOG_EVENTS_AND_TAGS_LIST(DECLARE_EVENT)};
|
||||
@ -557,7 +555,7 @@ class Profiler: public base::Thread {
|
||||
void Disengage();
|
||||
|
||||
// Inserts collected profiling data into buffer.
|
||||
void Insert(TickSample* sample) {
|
||||
void Insert(v8::TickSample* sample) {
|
||||
if (paused_)
|
||||
return;
|
||||
|
||||
@ -578,7 +576,7 @@ class Profiler: public base::Thread {
|
||||
|
||||
private:
|
||||
// Waits for a signal and removes profiling data.
|
||||
bool Remove(TickSample* sample) {
|
||||
bool Remove(v8::TickSample* sample) {
|
||||
buffer_semaphore_.Wait(); // Wait for an element.
|
||||
*sample = buffer_[base::NoBarrier_Load(&tail_)];
|
||||
bool result = overflow_;
|
||||
@ -595,7 +593,7 @@ class Profiler: public base::Thread {
|
||||
// Cyclic buffer for communicating profiling samples
|
||||
// between the signal handler and the worker thread.
|
||||
static const int kBufferSize = 128;
|
||||
TickSample buffer_[kBufferSize]; // Buffer storage.
|
||||
v8::TickSample buffer_[kBufferSize]; // Buffer storage.
|
||||
int head_; // Index to the buffer head.
|
||||
base::Atomic32 tail_; // Index to the buffer tail.
|
||||
bool overflow_; // Tell whether a buffer overflow has occurred.
|
||||
@ -619,10 +617,10 @@ class Profiler: public base::Thread {
|
||||
//
|
||||
class Ticker: public sampler::Sampler {
|
||||
public:
|
||||
Ticker(Isolate* isolate, int interval):
|
||||
sampler::Sampler(reinterpret_cast<v8::Isolate*>(isolate)),
|
||||
profiler_(NULL),
|
||||
sampling_thread_(new SamplingThread(this, interval)) {}
|
||||
Ticker(Isolate* isolate, int interval)
|
||||
: sampler::Sampler(reinterpret_cast<v8::Isolate*>(isolate)),
|
||||
profiler_(nullptr),
|
||||
sampling_thread_(new SamplingThread(this, interval)) {}
|
||||
|
||||
~Ticker() {
|
||||
if (IsActive()) Stop();
|
||||
@ -630,7 +628,7 @@ class Ticker: public sampler::Sampler {
|
||||
}
|
||||
|
||||
void SetProfiler(Profiler* profiler) {
|
||||
DCHECK(profiler_ == NULL);
|
||||
DCHECK(profiler_ == nullptr);
|
||||
profiler_ = profiler;
|
||||
IncreaseProfilingDepth();
|
||||
if (!IsActive()) Start();
|
||||
@ -638,7 +636,7 @@ class Ticker: public sampler::Sampler {
|
||||
}
|
||||
|
||||
void ClearProfiler() {
|
||||
profiler_ = NULL;
|
||||
profiler_ = nullptr;
|
||||
if (IsActive()) Stop();
|
||||
DecreaseProfilingDepth();
|
||||
sampling_thread_->Join();
|
||||
@ -646,15 +644,15 @@ class Ticker: public sampler::Sampler {
|
||||
|
||||
void SampleStack(const v8::RegisterState& state) override {
|
||||
if (!profiler_) return;
|
||||
v8::Isolate* v8_isolate = isolate();
|
||||
Isolate* i_isolate = reinterpret_cast<Isolate*>(v8_isolate);
|
||||
#if defined(USE_SIMULATOR)
|
||||
if (!SimulatorHelper::FillRegisters(i_isolate,
|
||||
const_cast<v8::RegisterState*>(&state)))
|
||||
return;
|
||||
Isolate* i_isolate = reinterpret_cast<Isolate*>(isolate());
|
||||
v8::RegisterState regs;
|
||||
if (!SimulatorHelper::FillRegisters(i_isolate, ®s)) return;
|
||||
#else
|
||||
const v8::RegisterState& regs = state;
|
||||
#endif
|
||||
TickSample sample;
|
||||
sample.Init(i_isolate, state, TickSample::kIncludeCEntryFrame, true);
|
||||
v8::TickSample sample;
|
||||
sample.Init(isolate(), regs, v8::TickSample::kIncludeCEntryFrame, true);
|
||||
profiler_->Insert(&sample);
|
||||
}
|
||||
|
||||
@ -714,7 +712,7 @@ void Profiler::Disengage() {
|
||||
// inserting a fake element in the queue and then wait for
|
||||
// the thread to terminate.
|
||||
base::NoBarrier_Store(&running_, 0);
|
||||
TickSample sample;
|
||||
v8::TickSample sample;
|
||||
// Reset 'paused_' flag, otherwise semaphore may not be signalled.
|
||||
resume();
|
||||
Insert(&sample);
|
||||
@ -725,7 +723,7 @@ void Profiler::Disengage() {
|
||||
|
||||
|
||||
void Profiler::Run() {
|
||||
TickSample sample;
|
||||
v8::TickSample sample;
|
||||
bool overflow = Remove(&sample);
|
||||
while (base::NoBarrier_Load(&running_)) {
|
||||
LOG(isolate_, TickEvent(&sample, overflow));
|
||||
@ -1367,7 +1365,7 @@ void Logger::RuntimeCallTimerEvent() {
|
||||
msg.WriteToLogFile();
|
||||
}
|
||||
|
||||
void Logger::TickEvent(TickSample* sample, bool overflow) {
|
||||
void Logger::TickEvent(v8::TickSample* sample, bool overflow) {
|
||||
if (!log_->IsEnabled() || !FLAG_prof_cpp) return;
|
||||
if (FLAG_runtime_call_stats) {
|
||||
RuntimeCallTimerEvent();
|
||||
|
18
src/log.h
18
src/log.h
@ -17,9 +17,7 @@
|
||||
|
||||
namespace v8 {
|
||||
|
||||
namespace base {
|
||||
class Semaphore;
|
||||
}
|
||||
struct TickSample;
|
||||
|
||||
namespace sampler {
|
||||
class Sampler;
|
||||
@ -65,11 +63,15 @@ namespace internal {
|
||||
class CodeEventListener;
|
||||
class CpuProfiler;
|
||||
class Isolate;
|
||||
class JitLogger;
|
||||
class Log;
|
||||
class LowLevelLogger;
|
||||
class PerfBasicLogger;
|
||||
class PerfJitLogger;
|
||||
class Profiler;
|
||||
class Ticker;
|
||||
class ProfilerListener;
|
||||
class RuntimeCallTimer;
|
||||
struct TickSample;
|
||||
class Ticker;
|
||||
|
||||
#undef LOG
|
||||
#define LOG(isolate, Call) \
|
||||
@ -84,12 +86,6 @@ struct TickSample;
|
||||
if (logger->is_logging_code_events()) logger->Call; \
|
||||
} while (false)
|
||||
|
||||
class JitLogger;
|
||||
class PerfBasicLogger;
|
||||
class LowLevelLogger;
|
||||
class PerfJitLogger;
|
||||
class ProfilerListener;
|
||||
|
||||
class Logger : public CodeEventListener {
|
||||
public:
|
||||
enum StartEnd { START = 0, END = 1 };
|
||||
|
@ -12,11 +12,10 @@
|
||||
#include "src/profiler/strings-storage.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
struct TickSample;
|
||||
|
||||
namespace internal {
|
||||
|
||||
// Provides a mapping from the offsets within generated code to
|
||||
// the source line.
|
||||
class JITLineInfoTable : public Malloced {
|
||||
|
Loading…
Reference in New Issue
Block a user