Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1055)

Side by Side Diff: content/renderer/devtools/v8_sampling_profiler.cc

Issue 1121463005: Fixit: Split base::TimeTicks --> TimeTicks + ThreadTicks + TraceTicks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More Windows compile fixes. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/child/blink_platform_impl.cc ('k') | gpu/perftests/measurements.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/devtools/v8_sampling_profiler.h" 5 #include "content/renderer/devtools/v8_sampling_profiler.h"
6 6
7 #if defined(OS_POSIX) 7 #if defined(OS_POSIX)
8 #include <signal.h> 8 #include <signal.h>
9 #define USE_SIGNALS 9 #define USE_SIGNALS
10 #endif 10 #endif
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 "0x%" PRIx64, static_cast<uint64>(reinterpret_cast<intptr_t>(value))); 88 "0x%" PRIx64, static_cast<uint64>(reinterpret_cast<intptr_t>(value)));
89 } 89 }
90 90
91 class SampleRecord { 91 class SampleRecord {
92 public: 92 public:
93 static const int kMaxFramesCountLog2 = 8; 93 static const int kMaxFramesCountLog2 = 8;
94 static const unsigned kMaxFramesCount = (1u << kMaxFramesCountLog2) - 1; 94 static const unsigned kMaxFramesCount = (1u << kMaxFramesCountLog2) - 1;
95 95
96 SampleRecord() {} 96 SampleRecord() {}
97 97
98 base::TimeTicks timestamp() const { return timestamp_; } 98 base::TraceTicks timestamp() const { return timestamp_; }
99 void Collect(v8::Isolate* isolate, 99 void Collect(v8::Isolate* isolate,
100 base::TimeTicks timestamp, 100 base::TraceTicks timestamp,
101 const v8::RegisterState& state); 101 const v8::RegisterState& state);
102 scoped_refptr<ConvertableToTraceFormat> ToTraceFormat() const; 102 scoped_refptr<ConvertableToTraceFormat> ToTraceFormat() const;
103 103
104 private: 104 private:
105 base::TimeTicks timestamp_; 105 base::TraceTicks timestamp_;
106 unsigned vm_state_ : 4; 106 unsigned vm_state_ : 4;
107 unsigned frames_count_ : kMaxFramesCountLog2; 107 unsigned frames_count_ : kMaxFramesCountLog2;
108 const void* frames_[kMaxFramesCount]; 108 const void* frames_[kMaxFramesCount];
109 109
110 DISALLOW_COPY_AND_ASSIGN(SampleRecord); 110 DISALLOW_COPY_AND_ASSIGN(SampleRecord);
111 }; 111 };
112 112
113 void SampleRecord::Collect(v8::Isolate* isolate, 113 void SampleRecord::Collect(v8::Isolate* isolate,
114 base::TimeTicks timestamp, 114 base::TraceTicks timestamp,
115 const v8::RegisterState& state) { 115 const v8::RegisterState& state) {
116 v8::SampleInfo sample_info; 116 v8::SampleInfo sample_info;
117 isolate->GetStackSample(state, (void**)frames_, kMaxFramesCount, 117 isolate->GetStackSample(state, (void**)frames_, kMaxFramesCount,
118 &sample_info); 118 &sample_info);
119 timestamp_ = timestamp; 119 timestamp_ = timestamp;
120 frames_count_ = sample_info.frames_count; 120 frames_count_ = sample_info.frames_count;
121 vm_state_ = sample_info.vm_state; 121 vm_state_ = sample_info.vm_state;
122 } 122 }
123 123
124 scoped_refptr<ConvertableToTraceFormat> SampleRecord::ToTraceFormat() const { 124 scoped_refptr<ConvertableToTraceFormat> SampleRecord::ToTraceFormat() const {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 LOG(ERROR) << "pthread_kill failed with error " << error << " " 275 LOG(ERROR) << "pthread_kill failed with error " << error << " "
276 << strerror(error); 276 << strerror(error);
277 } 277 }
278 #endif 278 #endif
279 InjectPendingEvents(); 279 InjectPendingEvents();
280 } 280 }
281 281
282 void Sampler::DoSample(const v8::RegisterState& state) { 282 void Sampler::DoSample(const v8::RegisterState& state) {
283 // Called in the sampled thread signal handler. 283 // Called in the sampled thread signal handler.
284 // Because of that it is not allowed to do any memory allocation here. 284 // Because of that it is not allowed to do any memory allocation here.
285 base::TimeTicks timestamp = base::TimeTicks::NowFromSystemTraceTime(); 285 base::TraceTicks timestamp = base::TraceTicks::Now();
286 SampleRecord* record = samples_data_->StartEnqueue(); 286 SampleRecord* record = samples_data_->StartEnqueue();
287 if (!record) 287 if (!record)
288 return; 288 return;
289 record->Collect(isolate_, timestamp, state); 289 record->Collect(isolate_, timestamp, state);
290 samples_data_->FinishEnqueue(); 290 samples_data_->FinishEnqueue();
291 } 291 }
292 292
293 void Sampler::InjectPendingEvents() { 293 void Sampler::InjectPendingEvents() {
294 SampleRecord* record = samples_data_->Peek(); 294 SampleRecord* record = samples_data_->Peek();
295 while (record) { 295 while (record) {
296 TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP1( 296 TRACE_EVENT_SAMPLE_WITH_TID_AND_TIMESTAMP1(
297 TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), "V8Sample", 297 TRACE_DISABLED_BY_DEFAULT("v8.cpu_profile"), "V8Sample",
298 platform_data_.thread_id(), 298 platform_data_.thread_id(),
299 (record->timestamp() - base::TimeTicks()).InMicroseconds(), "data", 299 (record->timestamp() - base::TraceTicks()).InMicroseconds(), "data",
300 record->ToTraceFormat()); 300 record->ToTraceFormat());
301 samples_data_->Remove(); 301 samples_data_->Remove();
302 record = samples_data_->Peek(); 302 record = samples_data_->Peek();
303 base::subtle::NoBarrier_AtomicIncrement(&samples_count_, 1); 303 base::subtle::NoBarrier_AtomicIncrement(&samples_count_, 1);
304 } 304 }
305 } 305 }
306 306
307 // static 307 // static
308 void Sampler::InstallJitCodeEventHandler(Isolate* isolate, void* data) { 308 void Sampler::InstallJitCodeEventHandler(Isolate* isolate, void* data) {
309 // Called on the sampled V8 thread. 309 // Called on the sampled V8 thread.
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 render_thread_sampler_->SetEventsToCollectForTest(code_added_events, 618 render_thread_sampler_->SetEventsToCollectForTest(code_added_events,
619 sample_events); 619 sample_events);
620 waitable_event_for_testing_.reset(new base::WaitableEvent(false, false)); 620 waitable_event_for_testing_.reset(new base::WaitableEvent(false, false));
621 } 621 }
622 622
623 void V8SamplingProfiler::WaitSamplingEventForTesting() { 623 void V8SamplingProfiler::WaitSamplingEventForTesting() {
624 waitable_event_for_testing_->Wait(); 624 waitable_event_for_testing_->Wait();
625 } 625 }
626 626
627 } // namespace blink 627 } // namespace blink
OLDNEW
« no previous file with comments | « content/child/blink_platform_impl.cc ('k') | gpu/perftests/measurements.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698