Revision: 14340
Author: [email protected]
Date: Thu Apr 18 09:23:57 2013
Log: Rollback of r13735 in 3.17 branch.
Send SIGPROF signals on the profiler event processor thread
BUG=v8:2364
[email protected]
Review URL: https://codereview.chromium.org/14087016
http://code.google.com/p/v8/source/detail?r=14340
Modified:
/branches/3.17/src/circular-queue.cc
/branches/3.17/src/circular-queue.h
/branches/3.17/src/cpu-profiler.cc
/branches/3.17/src/cpu-profiler.h
/branches/3.17/src/flag-definitions.h
/branches/3.17/src/platform-cygwin.cc
/branches/3.17/src/platform-freebsd.cc
/branches/3.17/src/platform-linux.cc
/branches/3.17/src/platform-macos.cc
/branches/3.17/src/platform-nullos.cc
/branches/3.17/src/platform-openbsd.cc
/branches/3.17/src/platform-solaris.cc
/branches/3.17/src/platform-win32.cc
/branches/3.17/src/platform.h
/branches/3.17/src/version.cc
/branches/3.17/test/cctest/test-cpu-profiler.cc
=======================================
--- /branches/3.17/src/circular-queue.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/circular-queue.cc Thu Apr 18 09:23:57 2013
@@ -33,16 +33,18 @@
namespace internal {
-SamplingCircularQueue::SamplingCircularQueue(
- int record_size_in_bytes,
- int desired_chunk_size_in_bytes,
- int buffer_size_in_chunks,
- bool keep_producer_consumer_distance)
+SamplingCircularQueue::SamplingCircularQueue(int record_size_in_bytes,
+ int
desired_chunk_size_in_bytes,
+ int buffer_size_in_chunks)
: record_size_(record_size_in_bytes / sizeof(Cell)),
chunk_size_in_bytes_(desired_chunk_size_in_bytes /
record_size_in_bytes *
record_size_in_bytes),
chunk_size_(chunk_size_in_bytes_ / sizeof(Cell)),
buffer_size_(chunk_size_ * buffer_size_in_chunks),
+ // The distance ensures that producer and consumer never step on
+ // each other's chunks and helps eviction of produced data from
+ // the CPU cache (having that chunk size is bigger than the cache.)
+ producer_consumer_distance_(2 * chunk_size_),
buffer_(NewArray<Cell>(buffer_size_ + 1)) {
ASSERT(buffer_size_in_chunks > 2);
// Clean up the whole buffer to avoid encountering a random kEnd
@@ -72,13 +74,7 @@
ASSERT(reinterpret_cast<byte*>(consumer_pos_ + 1) <=
positions_ + positions_size);
consumer_pos_->dequeue_chunk_pos = buffer_;
- consumer_pos_->dequeue_chunk_poll_pos = buffer_;
- // The distance ensures that producer and consumer never step on
- // each other's chunks and helps eviction of produced data from
- // the CPU cache (having that chunk size is bigger than the cache.)
- if (keep_producer_consumer_distance) {
- consumer_pos_->dequeue_chunk_poll_pos += 2 * chunk_size_;
- }
+ consumer_pos_->dequeue_chunk_poll_pos = buffer_ +
producer_consumer_distance_;
consumer_pos_->dequeue_pos = NULL;
}
=======================================
--- /branches/3.17/src/circular-queue.h Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/circular-queue.h Thu Apr 18 09:23:57 2013
@@ -47,8 +47,7 @@
// Executed on the application thread.
SamplingCircularQueue(int record_size_in_bytes,
int desired_chunk_size_in_bytes,
- int buffer_size_in_chunks,
- bool keep_producer_consumer_distance = true);
+ int buffer_size_in_chunks);
~SamplingCircularQueue();
// Enqueue returns a pointer to a memory location for storing the next
@@ -89,6 +88,7 @@
const int chunk_size_in_bytes_;
const int chunk_size_;
const int buffer_size_;
+ const int producer_consumer_distance_;
Cell* buffer_;
byte* positions_;
ProducerPosition* producer_pos_;
=======================================
--- /branches/3.17/src/cpu-profiler.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/cpu-profiler.cc Thu Apr 18 09:23:57 2013
@@ -45,18 +45,13 @@
static const int kProfilerStackSize = 64 * KB;
-ProfilerEventsProcessor::ProfilerEventsProcessor(ProfileGenerator*
generator,
- Sampler* sampler,
- int period_in_useconds)
+ProfilerEventsProcessor::ProfilerEventsProcessor(ProfileGenerator*
generator)
: Thread(Thread::Options("v8:ProfEvntProc", kProfilerStackSize)),
generator_(generator),
- sampler_(sampler),
running_(true),
- period_in_useconds_(period_in_useconds),
ticks_buffer_(sizeof(TickSampleEventRecord),
kTickSamplesBufferChunkSize,
- kTickSamplesBufferChunksCount,
- !Sampler::CanSampleOnProfilerEventsProcessorThread()),
+ kTickSamplesBufferChunksCount),
enqueue_order_(0) {
}
@@ -242,44 +237,19 @@
}
}
}
-
-
-void ProfilerEventsProcessor::ProcessEventsAndDoSample(
- unsigned* dequeue_order) {
- int64_t stop_time = OS::Ticks() + period_in_useconds_;
- // Keep processing existing events until we need to do next sample.
- while (OS::Ticks() < stop_time) {
- if (ProcessTicks(*dequeue_order)) {
- // All ticks of the current dequeue_order are processed,
- // proceed to the next code event.
- ProcessCodeEvent(dequeue_order);
- }
- }
- // Schedule next sample. sampler_ is NULL in tests.
- if (sampler_)
- sampler_->DoSample();
-}
-
-
-void ProfilerEventsProcessor::ProcessEventsAndYield(unsigned*
dequeue_order) {
- if (ProcessTicks(*dequeue_order)) {
- // All ticks of the current dequeue_order are processed,
- // proceed to the next code event.
- ProcessCodeEvent(dequeue_order);
- }
- YieldCPU();
-}
void ProfilerEventsProcessor::Run() {
unsigned dequeue_order = 0;
while (running_) {
- if (Sampler::CanSampleOnProfilerEventsProcessorThread()) {
- ProcessEventsAndDoSample(&dequeue_order);
- } else {
- ProcessEventsAndYield(&dequeue_order);
+ // Process ticks until we have any.
+ if (ProcessTicks(dequeue_order)) {
+ // All ticks of the current dequeue_order are processed,
+ // proceed to the next code event.
+ ProcessCodeEvent(&dequeue_order);
}
+ YieldCPU();
}
// Process remaining tick events.
@@ -516,15 +486,13 @@
if (processor_ == NULL) {
Isolate* isolate = Isolate::Current();
- Sampler* sampler =
reinterpret_cast<Sampler*>(isolate->logger()->ticker_);
// Disable logging when using the new implementation.
saved_logging_nesting_ = isolate->logger()->logging_nesting_;
isolate->logger()->logging_nesting_ = 0;
generator_ = new ProfileGenerator(profiles_);
- processor_ = new ProfilerEventsProcessor(generator_,
- sampler,
-
FLAG_cpu_profiler_sampling_period);
+ processor_ = new ProfilerEventsProcessor(generator_);
is_profiling_ = true;
+ processor_->Start();
// Enumerate stuff we already have in the heap.
if (isolate->heap()->HasBeenSetUp()) {
if (!FLAG_prof_browser_mode) {
@@ -537,13 +505,12 @@
isolate->logger()->LogAccessorCallbacks();
}
// Enable stack sampling.
+ Sampler* sampler =
reinterpret_cast<Sampler*>(isolate->logger()->ticker_);
if (!sampler->IsActive()) {
sampler->Start();
need_to_stop_sampler_ = true;
}
- sampler->SetHasProcessingThread(true);
sampler->IncreaseProfilingDepth();
- processor_->Start();
}
}
@@ -581,7 +548,6 @@
Logger* logger = Isolate::Current()->logger();
Sampler* sampler = reinterpret_cast<Sampler*>(logger->ticker_);
sampler->DecreaseProfilingDepth();
- sampler->SetHasProcessingThread(false);
if (need_to_stop_sampler_) {
sampler->Stop();
need_to_stop_sampler_ = false;
=======================================
--- /branches/3.17/src/cpu-profiler.h Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/cpu-profiler.h Thu Apr 18 09:23:57 2013
@@ -124,9 +124,7 @@
// methods called by event producers: VM and stack sampler threads.
class ProfilerEventsProcessor : public Thread {
public:
- ProfilerEventsProcessor(ProfileGenerator* generator,
- Sampler* sampler,
- int period_in_useconds);
+ explicit ProfilerEventsProcessor(ProfileGenerator* generator);
virtual ~ProfilerEventsProcessor() {}
// Thread control.
@@ -175,16 +173,11 @@
// Called from events processing thread (Run() method.)
bool ProcessCodeEvent(unsigned* dequeue_order);
bool ProcessTicks(unsigned dequeue_order);
- void ProcessEventsAndDoSample(unsigned* dequeue_order);
- void ProcessEventsAndYield(unsigned* dequeue_order);
INLINE(static bool FilterOutCodeCreateEvent(Logger::LogEventsAndTags
tag));
ProfileGenerator* generator_;
- Sampler* sampler_;
bool running_;
- // Sampling period in microseconds.
- const int period_in_useconds_;
UnboundQueue<CodeEventsContainer> events_buffer_;
SamplingCircularQueue ticks_buffer_;
UnboundQueue<TickSampleEventRecord> ticks_from_vm_buffer_;
=======================================
--- /branches/3.17/src/flag-definitions.h Thu Mar 28 09:31:02 2013
+++ /branches/3.17/src/flag-definitions.h Thu Apr 18 09:23:57 2013
@@ -365,10 +365,6 @@
DEFINE_bool(cache_prototype_transitions, true, "cache prototype
transitions")
-// cpu-profiler.cc
-DEFINE_int(cpu_profiler_sampling_period, 1000,
- "CPU profiler sampling period in microseconds")
-
// debug.cc
DEFINE_bool(trace_debug_json, false, "trace debugging JSON
request/response")
DEFINE_bool(trace_js_array_abuse, false,
=======================================
--- /branches/3.17/src/platform-cygwin.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-cygwin.cc Thu Apr 18 09:23:57 2013
@@ -774,23 +774,6 @@
SamplerThread::RemoveActiveSampler(this);
SetActive(false);
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- return false;
-}
-
-
-void Sampler::DoSample() {
-}
-
-
-void Sampler::StartProfiling() {
-}
-
-
-void Sampler::StopProfiling() {
-}
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform-freebsd.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-freebsd.cc Thu Apr 18 09:23:57 2013
@@ -896,23 +896,6 @@
SignalSender::RemoveActiveSampler(this);
SetActive(false);
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- return false;
-}
-
-
-void Sampler::DoSample() {
-}
-
-
-void Sampler::StartProfiling() {
-}
-
-
-void Sampler::StopProfiling() {
-}
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform-linux.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-linux.cc Thu Apr 18 09:23:57 2013
@@ -1127,27 +1127,29 @@
}
-class CpuProfilerSignalHandler {
+class Sampler::PlatformData : public Malloced {
public:
+ PlatformData() : vm_tid_(GetThreadID()) {}
+
+ int vm_tid() const { return vm_tid_; }
+
+ private:
+ const int vm_tid_;
+};
+
+
+class SignalSender : public Thread {
+ public:
+ static const int kSignalSenderStackSize = 64 * KB;
+
+ explicit SignalSender(int interval)
+ : Thread(Thread::Options("SignalSender", kSignalSenderStackSize)),
+ vm_tgid_(getpid()),
+ interval_(interval) {}
+
static void SetUp() { if (!mutex_) mutex_ = OS::CreateMutex(); }
static void TearDown() { delete mutex_; }
- static bool RegisterProfilingSampler() {
- ScopedLock lock(mutex_);
- if (!profiling_samplers_count_) InstallSignalHandler();
- ++profiling_samplers_count_;
- return signal_handler_installed_;
- }
-
- static void UnregisterProfilingSampler() {
- ScopedLock lock(mutex_);
- ASSERT(profiling_samplers_count_ > 0);
- if (!profiling_samplers_count_) return;
- if (profiling_samplers_count_ == 1) RestoreSignalHandler();
- --profiling_samplers_count_;
- }
-
- private:
static void InstallSignalHandler() {
struct sigaction sa;
sa.sa_sigaction = ProfilerSignalHandler;
@@ -1163,61 +1165,6 @@
signal_handler_installed_ = false;
}
}
-
- // Protects the process wide state below.
- static Mutex* mutex_;
- static int profiling_samplers_count_;
- static bool signal_handler_installed_;
- static struct sigaction old_signal_handler_;
-};
-
-
-Mutex* CpuProfilerSignalHandler::mutex_ = NULL;
-int CpuProfilerSignalHandler::profiling_samplers_count_ = 0;
-bool CpuProfilerSignalHandler::signal_handler_installed_ = false;
-struct sigaction CpuProfilerSignalHandler::old_signal_handler_;
-
-
-class Sampler::PlatformData : public Malloced {
- public:
- PlatformData()
- : vm_tgid_(getpid()),
- vm_tid_(GetThreadID()),
- signal_handler_installed_(false) {}
-
- void set_signal_handler_installed(bool value) {
- signal_handler_installed_ = value;
- }
-
- void SendProfilingSignal() {
- if (!signal_handler_installed_) return;
- // Glibc doesn't provide a wrapper for tgkill(2).
-#if defined(ANDROID)
- syscall(__NR_tgkill, vm_tgid_, vm_tid_, SIGPROF);
-#else
- int result = syscall(SYS_tgkill, vm_tgid_, vm_tid_, SIGPROF);
- USE(result);
- ASSERT(result == 0);
-#endif
- }
-
- private:
- const int vm_tgid_;
- const int vm_tid_;
- bool signal_handler_installed_;
-};
-
-
-class SignalSender : public Thread {
- public:
- static const int kSignalSenderStackSize = 64 * KB;
-
- explicit SignalSender(int interval)
- : Thread(Thread::Options("SignalSender", kSignalSenderStackSize)),
- interval_(interval) {}
-
- static void SetUp() { if (!mutex_) mutex_ = OS::CreateMutex(); }
- static void TearDown() { delete mutex_; }
static void AddActiveSampler(Sampler* sampler) {
ScopedLock lock(mutex_);
@@ -1239,6 +1186,7 @@
RuntimeProfiler::StopRuntimeProfilerThreadBeforeShutdown(instance_);
delete instance_;
instance_ = NULL;
+ RestoreSignalHandler();
}
}
@@ -1250,8 +1198,10 @@
// When CPU profiling is enabled both JavaScript and C++ code is
// profiled. We must not suspend.
if (state == SamplerRegistry::HAS_CPU_PROFILING_SAMPLERS) {
+ if (!signal_handler_installed_) InstallSignalHandler();
SamplerRegistry::IterateActiveSamplers(&DoCpuProfile, this);
} else {
+ if (signal_handler_installed_) RestoreSignalHandler();
if (RuntimeProfiler::WaitForSomeIsolateToEnterJS()) continue;
}
Sleep(); // TODO(svenpanne) Figure out if OS:Sleep(interval_) is
enough.
@@ -1260,7 +1210,20 @@
static void DoCpuProfile(Sampler* sampler, void* raw_sender) {
if (!sampler->IsProfiling()) return;
- sampler->DoSample();
+ SignalSender* sender = reinterpret_cast<SignalSender*>(raw_sender);
+ sender->SendProfilingSignal(sampler->platform_data()->vm_tid());
+ }
+
+ void SendProfilingSignal(int tid) {
+ if (!signal_handler_installed_) return;
+ // Glibc doesn't provide a wrapper for tgkill(2).
+#if defined(ANDROID)
+ syscall(__NR_tgkill, vm_tgid_, tid, SIGPROF);
+#else
+ int result = syscall(SYS_tgkill, vm_tgid_, tid, SIGPROF);
+ USE(result);
+ ASSERT(result == 0);
+#endif
}
void Sleep() {
@@ -1284,11 +1247,13 @@
#endif // ANDROID
}
+ const int vm_tgid_;
const int interval_;
// Protects the process wide state below.
static Mutex* mutex_;
static SignalSender* instance_;
+ static bool signal_handler_installed_;
static struct sigaction old_signal_handler_;
private:
@@ -1299,6 +1264,7 @@
Mutex* SignalSender::mutex_ = NULL;
SignalSender* SignalSender::instance_ = NULL;
struct sigaction SignalSender::old_signal_handler_;
+bool SignalSender::signal_handler_installed_ = false;
void OS::SetUp() {
@@ -1326,12 +1292,10 @@
}
#endif
SignalSender::SetUp();
- CpuProfilerSignalHandler::SetUp();
}
void OS::TearDown() {
- CpuProfilerSignalHandler::TearDown();
SignalSender::TearDown();
delete limit_mutex;
}
@@ -1341,7 +1305,6 @@
: isolate_(isolate),
interval_(interval),
profiling_(false),
- has_processing_thread_(false),
active_(false),
samples_taken_(0) {
data_ = new PlatformData;
@@ -1366,28 +1329,6 @@
SignalSender::RemoveActiveSampler(this);
SetActive(false);
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- return true;
-}
-
-
-void Sampler::DoSample() {
- platform_data()->SendProfilingSignal();
-}
-
-
-void Sampler::StartProfiling() {
- platform_data()->set_signal_handler_installed(
- CpuProfilerSignalHandler::RegisterProfilingSampler());
-}
-
-
-void Sampler::StopProfiling() {
- CpuProfilerSignalHandler::UnregisterProfilingSampler();
- platform_data()->set_signal_handler_installed(false);
-}
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform-macos.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-macos.cc Thu Apr 18 09:23:57 2013
@@ -920,23 +920,6 @@
SamplerThread::RemoveActiveSampler(this);
SetActive(false);
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- return false;
-}
-
-
-void Sampler::DoSample() {
-}
-
-
-void Sampler::StartProfiling() {
-}
-
-
-void Sampler::StopProfiling() {
-}
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform-nullos.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-nullos.cc Thu Apr 18 09:23:57 2013
@@ -523,27 +523,6 @@
void ProfileSampler::Stop() {
UNIMPLEMENTED();
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- UNIMPLEMENTED();
- return false;
-}
-
-
-void Sampler::DoSample() {
- UNIMPLEMENTED();
-}
-
-
-void Sampler::StartProfiling() {
- UNIMPLEMENTED();
-}
-
-
-void Sampler::StopProfiling() {
- UNIMPLEMENTED();
-}
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform-openbsd.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-openbsd.cc Thu Apr 18 09:23:57 2013
@@ -953,23 +953,6 @@
SignalSender::RemoveActiveSampler(this);
SetActive(false);
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- return false;
-}
-
-
-void Sampler::DoSample() {
-}
-
-
-void Sampler::StartProfiling() {
-}
-
-
-void Sampler::StopProfiling() {
-}
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform-solaris.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-solaris.cc Thu Apr 18 09:23:57 2013
@@ -871,23 +871,5 @@
SignalSender::RemoveActiveSampler(this);
SetActive(false);
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- return false;
-}
-
-
-void Sampler::DoSample() {
-}
-
-
-void Sampler::StartProfiling() {
-}
-
-
-void Sampler::StopProfiling() {
-}
-
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform-win32.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform-win32.cc Thu Apr 18 09:23:57 2013
@@ -2151,23 +2151,6 @@
SamplerThread::RemoveActiveSampler(this);
SetActive(false);
}
-
-
-bool Sampler::CanSampleOnProfilerEventsProcessorThread() {
- return false;
-}
-
-
-void Sampler::DoSample() {
-}
-
-
-void Sampler::StartProfiling() {
-}
-
-
-void Sampler::StopProfiling() {
-}
} } // namespace v8::internal
=======================================
--- /branches/3.17/src/platform.h Wed Feb 27 01:34:27 2013
+++ /branches/3.17/src/platform.h Thu Apr 18 09:23:57 2013
@@ -766,17 +766,10 @@
void Start();
void Stop();
- // Whether the sampling thread should use this Sampler for CPU profiling?
- bool IsProfiling() const {
- return NoBarrier_Load(&profiling_) > 0 &&
- !NoBarrier_Load(&has_processing_thread_);
- }
- void IncreaseProfilingDepth() {
- if (NoBarrier_AtomicIncrement(&profiling_, 1) == 1) StartProfiling();
- }
- void DecreaseProfilingDepth() {
- if (!NoBarrier_AtomicIncrement(&profiling_, -1)) StopProfiling();
- }
+ // Is the sampler used for profiling?
+ bool IsProfiling() const { return NoBarrier_Load(&profiling_) > 0; }
+ void IncreaseProfilingDepth() { NoBarrier_AtomicIncrement(&profiling_,
1); }
+ void DecreaseProfilingDepth() { NoBarrier_AtomicIncrement(&profiling_,
-1); }
// Whether the sampler is running (that is, consumes resources).
bool IsActive() const { return NoBarrier_Load(&active_); }
@@ -791,14 +784,6 @@
PlatformData* data() { return data_; }
PlatformData* platform_data() { return data_; }
-
- // If true next sample must be initiated on the profiler event processor
- // thread right after latest sample is processed.
- static bool CanSampleOnProfilerEventsProcessorThread();
- void DoSample();
- void SetHasProcessingThread(bool value) {
- NoBarrier_Store(&has_processing_thread_, value);
- }
protected:
virtual void DoSampleStack(TickSample* sample) = 0;
@@ -806,16 +791,10 @@
private:
void SetActive(bool value) { NoBarrier_Store(&active_, value); }
void IncSamplesTaken() { if (++samples_taken_ < 0) samples_taken_ = 0; }
-
- // Perform platform-specific initialization before DoSample() may be
invoked.
- void StartProfiling();
- // Perform platform-specific cleanup after profiling.
- void StopProfiling();
Isolate* isolate_;
const int interval_;
Atomic32 profiling_;
- Atomic32 has_processing_thread_;
Atomic32 active_;
PlatformData* data_; // Platform specific data.
int samples_taken_; // Counts stack samples taken.
=======================================
--- /branches/3.17/src/version.cc Wed Apr 17 09:54:52 2013
+++ /branches/3.17/src/version.cc Thu Apr 18 09:23:57 2013
@@ -35,7 +35,7 @@
#define MAJOR_VERSION 3
#define MINOR_VERSION 17
#define BUILD_NUMBER 6
-#define PATCH_LEVEL 8
+#define PATCH_LEVEL 9
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
#define IS_CANDIDATE_VERSION 0
=======================================
--- /branches/3.17/test/cctest/test-cpu-profiler.cc Wed Feb 27 01:34:27 2013
+++ /branches/3.17/test/cctest/test-cpu-profiler.cc Thu Apr 18 09:23:57 2013
@@ -20,7 +20,7 @@
TEST(StartStop) {
CpuProfilesCollection profiles;
ProfileGenerator generator(&profiles);
- ProfilerEventsProcessor processor(&generator, NULL, 100);
+ ProfilerEventsProcessor processor(&generator);
processor.Start();
processor.Stop();
processor.Join();
@@ -84,7 +84,7 @@
CpuProfilesCollection profiles;
profiles.StartProfiling("", 1);
ProfileGenerator generator(&profiles);
- ProfilerEventsProcessor processor(&generator, NULL, 100);
+ ProfilerEventsProcessor processor(&generator);
processor.Start();
// Enqueue code creation events.
@@ -145,7 +145,7 @@
CpuProfilesCollection profiles;
profiles.StartProfiling("", 1);
ProfileGenerator generator(&profiles);
- ProfilerEventsProcessor processor(&generator, NULL, 100);
+ ProfilerEventsProcessor processor(&generator);
processor.Start();
processor.CodeCreateEvent(i::Logger::BUILTIN_TAG,
@@ -235,7 +235,7 @@
CpuProfilesCollection profiles;
profiles.StartProfiling("", 1);
ProfileGenerator generator(&profiles);
- ProfilerEventsProcessor processor(&generator, NULL, 100);
+ ProfilerEventsProcessor processor(&generator);
processor.Start();
processor.CodeCreateEvent(i::Logger::BUILTIN_TAG,
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.