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

Side by Side Diff: src/profile-generator.cc

Issue 358363002: Move platform abstraction to base library (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: updates Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project 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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/profile-generator-inl.h" 7 #include "src/profile-generator-inl.h"
8 8
9 #include "src/compiler.h" 9 #include "src/compiler.h"
10 #include "src/debug.h" 10 #include "src/debug.h"
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 // New node added. 201 // New node added.
202 ProfileNode* new_node = new ProfileNode(tree_, entry); 202 ProfileNode* new_node = new ProfileNode(tree_, entry);
203 map_entry->value = new_node; 203 map_entry->value = new_node;
204 children_list_.Add(new_node); 204 children_list_.Add(new_node);
205 } 205 }
206 return reinterpret_cast<ProfileNode*>(map_entry->value); 206 return reinterpret_cast<ProfileNode*>(map_entry->value);
207 } 207 }
208 208
209 209
210 void ProfileNode::Print(int indent) { 210 void ProfileNode::Print(int indent) {
211 OS::Print("%5u %*s %s%s %d #%d %s", 211 base::OS::Print("%5u %*s %s%s %d #%d %s", self_ticks_, indent, "",
212 self_ticks_, 212 entry_->name_prefix(), entry_->name(), entry_->script_id(),
213 indent, "", 213 id(), entry_->bailout_reason());
214 entry_->name_prefix(),
215 entry_->name(),
216 entry_->script_id(),
217 id(),
218 entry_->bailout_reason());
219 if (entry_->resource_name()[0] != '\0') 214 if (entry_->resource_name()[0] != '\0')
220 OS::Print(" %s:%d", entry_->resource_name(), entry_->line_number()); 215 base::OS::Print(" %s:%d", entry_->resource_name(), entry_->line_number());
221 OS::Print("\n"); 216 base::OS::Print("\n");
222 for (HashMap::Entry* p = children_.Start(); 217 for (HashMap::Entry* p = children_.Start();
223 p != NULL; 218 p != NULL;
224 p = children_.Next(p)) { 219 p = children_.Next(p)) {
225 reinterpret_cast<ProfileNode*>(p->value)->Print(indent + 2); 220 reinterpret_cast<ProfileNode*>(p->value)->Print(indent + 2);
226 } 221 }
227 } 222 }
228 223
229 224
230 class DeleteNodesCallback { 225 class DeleteNodesCallback {
231 public: 226 public:
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 // Remove child from the stack. 320 // Remove child from the stack.
326 stack.RemoveLast(); 321 stack.RemoveLast();
327 } 322 }
328 } 323 }
329 } 324 }
330 325
331 326
332 CpuProfile::CpuProfile(const char* title, bool record_samples) 327 CpuProfile::CpuProfile(const char* title, bool record_samples)
333 : title_(title), 328 : title_(title),
334 record_samples_(record_samples), 329 record_samples_(record_samples),
335 start_time_(TimeTicks::HighResolutionNow()) { 330 start_time_(base::TimeTicks::HighResolutionNow()) {
336 } 331 }
337 332
338 333
339 void CpuProfile::AddPath(TimeTicks timestamp, const Vector<CodeEntry*>& path) { 334 void CpuProfile::AddPath(base::TimeTicks timestamp,
335 const Vector<CodeEntry*>& path) {
340 ProfileNode* top_frame_node = top_down_.AddPathFromEnd(path); 336 ProfileNode* top_frame_node = top_down_.AddPathFromEnd(path);
341 if (record_samples_) { 337 if (record_samples_) {
342 timestamps_.Add(timestamp); 338 timestamps_.Add(timestamp);
343 samples_.Add(top_frame_node); 339 samples_.Add(top_frame_node);
344 } 340 }
345 } 341 }
346 342
347 343
348 void CpuProfile::CalculateTotalTicksAndSamplingRate() { 344 void CpuProfile::CalculateTotalTicksAndSamplingRate() {
349 end_time_ = TimeTicks::HighResolutionNow(); 345 end_time_ = base::TimeTicks::HighResolutionNow();
350 } 346 }
351 347
352 348
353 void CpuProfile::Print() { 349 void CpuProfile::Print() {
354 OS::Print("[Top down]:\n"); 350 base::OS::Print("[Top down]:\n");
355 top_down_.Print(); 351 top_down_.Print();
356 } 352 }
357 353
358 354
359 CodeEntry* const CodeMap::kSharedFunctionCodeEntry = NULL; 355 CodeEntry* const CodeMap::kSharedFunctionCodeEntry = NULL;
360 const CodeMap::CodeTreeConfig::Key CodeMap::CodeTreeConfig::kNoKey = NULL; 356 const CodeMap::CodeTreeConfig::Key CodeMap::CodeTreeConfig::kNoKey = NULL;
361 357
362 358
363 void CodeMap::AddCode(Address addr, CodeEntry* entry, unsigned size) { 359 void CodeMap::AddCode(Address addr, CodeEntry* entry, unsigned size) {
364 DeleteAllCoveredCode(addr, addr + size); 360 DeleteAllCoveredCode(addr, addr + size);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 CodeEntryInfo entry = locator.value(); 417 CodeEntryInfo entry = locator.value();
422 tree_.Remove(from); 418 tree_.Remove(from);
423 AddCode(to, entry.entry, entry.size); 419 AddCode(to, entry.entry, entry.size);
424 } 420 }
425 421
426 422
427 void CodeMap::CodeTreePrinter::Call( 423 void CodeMap::CodeTreePrinter::Call(
428 const Address& key, const CodeMap::CodeEntryInfo& value) { 424 const Address& key, const CodeMap::CodeEntryInfo& value) {
429 // For shared function entries, 'size' field is used to store their IDs. 425 // For shared function entries, 'size' field is used to store their IDs.
430 if (value.entry == kSharedFunctionCodeEntry) { 426 if (value.entry == kSharedFunctionCodeEntry) {
431 OS::Print("%p SharedFunctionInfo %d\n", key, value.size); 427 base::OS::Print("%p SharedFunctionInfo %d\n", key, value.size);
432 } else { 428 } else {
433 OS::Print("%p %5d %s\n", key, value.size, value.entry->name()); 429 base::OS::Print("%p %5d %s\n", key, value.size, value.entry->name());
434 } 430 }
435 } 431 }
436 432
437 433
438 void CodeMap::Print() { 434 void CodeMap::Print() {
439 CodeTreePrinter printer; 435 CodeTreePrinter printer;
440 tree_.ForEach(&printer); 436 tree_.ForEach(&printer);
441 } 437 }
442 438
443 439
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 if (profile == finished_profiles_[i]) { 514 if (profile == finished_profiles_[i]) {
519 finished_profiles_.Remove(i); 515 finished_profiles_.Remove(i);
520 return; 516 return;
521 } 517 }
522 } 518 }
523 UNREACHABLE(); 519 UNREACHABLE();
524 } 520 }
525 521
526 522
527 void CpuProfilesCollection::AddPathToCurrentProfiles( 523 void CpuProfilesCollection::AddPathToCurrentProfiles(
528 TimeTicks timestamp, const Vector<CodeEntry*>& path) { 524 base::TimeTicks timestamp, const Vector<CodeEntry*>& path) {
529 // As starting / stopping profiles is rare relatively to this 525 // As starting / stopping profiles is rare relatively to this
530 // method, we don't bother minimizing the duration of lock holding, 526 // method, we don't bother minimizing the duration of lock holding,
531 // e.g. copying contents of the list to a local vector. 527 // e.g. copying contents of the list to a local vector.
532 current_profiles_semaphore_.Wait(); 528 current_profiles_semaphore_.Wait();
533 for (int i = 0; i < current_profiles_.length(); ++i) { 529 for (int i = 0; i < current_profiles_.length(); ++i) {
534 current_profiles_[i]->AddPath(timestamp, path); 530 current_profiles_[i]->AddPath(timestamp, path);
535 } 531 }
536 current_profiles_semaphore_.Signal(); 532 current_profiles_semaphore_.Signal();
537 } 533 }
538 534
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 case OTHER: 666 case OTHER:
671 case EXTERNAL: 667 case EXTERNAL:
672 return program_entry_; 668 return program_entry_;
673 case IDLE: 669 case IDLE:
674 return idle_entry_; 670 return idle_entry_;
675 default: return NULL; 671 default: return NULL;
676 } 672 }
677 } 673 }
678 674
679 } } // namespace v8::internal 675 } } // namespace v8::internal
OLDNEW
« src/base/macros.h ('K') | « src/profile-generator.h ('k') | src/qnx-math.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698