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:
alph 2016-07-11 19:10:05 -07:00 committed by Commit bot
parent 0ac774095f
commit 69fd22da2a
3 changed files with 27 additions and 34 deletions

View File

@ -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, &regs)) 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();

View File

@ -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 };

View File

@ -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 {