Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #ifndef V8_COUNTERS_H_ | 5 #ifndef V8_COUNTERS_H_ |
| 6 #define V8_COUNTERS_H_ | 6 #define V8_COUNTERS_H_ |
| 7 | 7 |
| 8 #include "include/v8.h" | 8 #include "include/v8.h" |
| 9 #include "src/allocation.h" | 9 #include "src/allocation.h" |
| 10 #include "src/base/platform/elapsed-timer.h" | 10 #include "src/base/platform/elapsed-timer.h" |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 308 // events to be timed. | 308 // events to be timed. |
| 309 class AggregatableHistogramTimer : public Histogram { | 309 class AggregatableHistogramTimer : public Histogram { |
| 310 public: | 310 public: |
| 311 AggregatableHistogramTimer() {} | 311 AggregatableHistogramTimer() {} |
| 312 AggregatableHistogramTimer(const char* name, int min, int max, | 312 AggregatableHistogramTimer(const char* name, int min, int max, |
| 313 int num_buckets, Isolate* isolate) | 313 int num_buckets, Isolate* isolate) |
| 314 : Histogram(name, min, max, num_buckets, isolate) {} | 314 : Histogram(name, min, max, num_buckets, isolate) {} |
| 315 | 315 |
| 316 // Start/stop the "outer" scope. | 316 // Start/stop the "outer" scope. |
| 317 void Start() { time_ = base::TimeDelta(); } | 317 void Start() { time_ = base::TimeDelta(); } |
| 318 void Stop() { AddSample(static_cast<int>(time_.InMilliseconds())); } | 318 void Stop() { AddSample(static_cast<int>(time_.InMicroseconds())); } |
| 319 | 319 |
| 320 // Add a time value ("inner" scope). | 320 // Add a time value ("inner" scope). |
| 321 void Add(base::TimeDelta other) { time_ += other; } | 321 void Add(base::TimeDelta other) { time_ += other; } |
| 322 | 322 |
| 323 private: | 323 private: |
| 324 base::TimeDelta time_; | 324 base::TimeDelta time_; |
| 325 }; | 325 }; |
| 326 | 326 |
| 327 | 327 |
| 328 // A helper class for use with AggregatableHistogramTimer. | 328 // A helper class for use with AggregatableHistogramTimer. |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 353 AggregatableHistogramTimer* histogram_; | 353 AggregatableHistogramTimer* histogram_; |
| 354 }; | 354 }; |
| 355 | 355 |
| 356 | 356 |
| 357 #define HISTOGRAM_RANGE_LIST(HR) \ | 357 #define HISTOGRAM_RANGE_LIST(HR) \ |
| 358 /* Generic range histograms */ \ | 358 /* Generic range histograms */ \ |
| 359 HR(gc_idle_time_allotted_in_ms, V8.GCIdleTimeAllottedInMS, 0, 10000, 101) \ | 359 HR(gc_idle_time_allotted_in_ms, V8.GCIdleTimeAllottedInMS, 0, 10000, 101) \ |
| 360 HR(gc_idle_time_limit_overshot, V8.GCIdleTimeLimit.Overshot, 0, 10000, 101) \ | 360 HR(gc_idle_time_limit_overshot, V8.GCIdleTimeLimit.Overshot, 0, 10000, 101) \ |
| 361 HR(gc_idle_time_limit_undershot, V8.GCIdleTimeLimit.Undershot, 0, 10000, 101) | 361 HR(gc_idle_time_limit_undershot, V8.GCIdleTimeLimit.Undershot, 0, 10000, 101) |
| 362 | 362 |
| 363 #define HISTOGRAM_TIMER_LIST(HT) \ | 363 #define SECONDS *1000 * 1000 |
| 364 /* Garbage collection timers. */ \ | 364 #define MILLISECONDS *1000 |
|
vogelheim
2015/01/26 14:46:50
I'm not super fond of this style of macro meta pro
Yang
2015/01/26 15:09:07
Done.
| |
| 365 HT(gc_compactor, V8.GCCompactor) \ | 365 |
| 366 HT(gc_scavenger, V8.GCScavenger) \ | 366 #define HISTOGRAM_TIMER_LIST(HT) \ |
| 367 HT(gc_context, V8.GCContext) /* GC context cleanup time */ \ | 367 /* Garbage collection timers. */ \ |
| 368 HT(gc_idle_notification, V8.GCIdleNotification) \ | 368 HT(gc_compactor, V8.GCCompactor, 10 SECONDS) \ |
| 369 HT(gc_incremental_marking, V8.GCIncrementalMarking) \ | 369 HT(gc_scavenger, V8.GCScavenger, 10 SECONDS) \ |
| 370 HT(gc_low_memory_notification, V8.GCLowMemoryNotification) \ | 370 HT(gc_context, V8.GCContext, 10 SECONDS) /* GC context cleanup time */ \ |
| 371 /* Parsing timers. */ \ | 371 HT(gc_idle_notification, V8.GCIdleNotification, 10 SECONDS) \ |
| 372 HT(parse, V8.Parse) \ | 372 HT(gc_incremental_marking, V8.GCIncrementalMarking, 10 SECONDS) \ |
| 373 HT(parse_lazy, V8.ParseLazy) \ | 373 HT(gc_low_memory_notification, V8.GCLowMemoryNotification, 10 SECONDS) \ |
| 374 HT(pre_parse, V8.PreParse) \ | 374 /* Parsing timers. */ \ |
| 375 /* Compilation times. */ \ | 375 HT(parse, V8.Parse, 1000 MILLISECONDS) \ |
| 376 HT(compile, V8.Compile) \ | 376 HT(parse_lazy, V8.ParseLazy, 1000 MILLISECONDS) \ |
| 377 HT(compile_eval, V8.CompileEval) \ | 377 HT(pre_parse, V8.PreParse, 1000 MILLISECONDS) \ |
| 378 /* Serialization as part of compilation (code caching) */ \ | 378 /* Compilation times. */ \ |
| 379 HT(compile_serialize, V8.CompileSerialize) \ | 379 HT(compile, V8.Compile, 1000 MILLISECONDS) \ |
| 380 HT(compile_deserialize, V8.CompileDeserialize) \ | 380 HT(compile_eval, V8.CompileEval, 1000 MILLISECONDS) \ |
| 381 /* Total compilation time incl. caching/parsing */ \ | 381 /* Serialization as part of compilation (code caching) */ \ |
| 382 HT(compile_script, V8.CompileScript) | 382 HT(compile_serialize, V8.CompileSerialize, 100 MILLISECONDS) \ |
| 383 HT(compile_deserialize, V8.CompileDeserialize, 100 MILLISECONDS) \ | |
| 384 /* Total compilation time incl. caching/parsing */ \ | |
| 385 HT(compile_script, V8.CompileScript, 1000 MILLISECONDS) | |
| 386 | |
| 387 #undef SECONDS | |
| 388 #undef MILLISECONDS | |
| 383 | 389 |
| 384 | 390 |
| 385 #define AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT) \ | 391 #define AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT) \ |
| 386 AHT(compile_lazy, V8.CompileLazy) | 392 AHT(compile_lazy, V8.CompileLazy) |
| 387 | 393 |
| 388 | 394 |
| 389 #define HISTOGRAM_PERCENTAGE_LIST(HP) \ | 395 #define HISTOGRAM_PERCENTAGE_LIST(HP) \ |
| 390 /* Heap fragmentation. */ \ | 396 /* Heap fragmentation. */ \ |
| 391 HP(external_fragmentation_total, \ | 397 HP(external_fragmentation_total, \ |
| 392 V8.MemoryExternalFragmentationTotal) \ | 398 V8.MemoryExternalFragmentationTotal) \ |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 624 | 630 |
| 625 | 631 |
| 626 // This file contains all the v8 counters that are in use. | 632 // This file contains all the v8 counters that are in use. |
| 627 class Counters { | 633 class Counters { |
| 628 public: | 634 public: |
| 629 #define HR(name, caption, min, max, num_buckets) \ | 635 #define HR(name, caption, min, max, num_buckets) \ |
| 630 Histogram* name() { return &name##_; } | 636 Histogram* name() { return &name##_; } |
| 631 HISTOGRAM_RANGE_LIST(HR) | 637 HISTOGRAM_RANGE_LIST(HR) |
| 632 #undef HR | 638 #undef HR |
| 633 | 639 |
| 634 #define HT(name, caption) \ | 640 #define HT(name, caption, scale) \ |
| 635 HistogramTimer* name() { return &name##_; } | 641 HistogramTimer* name() { return &name##_; } |
| 636 HISTOGRAM_TIMER_LIST(HT) | 642 HISTOGRAM_TIMER_LIST(HT) |
| 637 #undef HT | 643 #undef HT |
| 638 | 644 |
| 639 #define AHT(name, caption) \ | 645 #define AHT(name, caption) \ |
| 640 AggregatableHistogramTimer* name() { return &name##_; } | 646 AggregatableHistogramTimer* name() { return &name##_; } |
| 641 AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT) | 647 AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT) |
| 642 #undef AHT | 648 #undef AHT |
| 643 | 649 |
| 644 #define HP(name, caption) \ | 650 #define HP(name, caption) \ |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 681 | 687 |
| 682 #define SC(name) \ | 688 #define SC(name) \ |
| 683 StatsCounter* count_of_CODE_AGE_##name() \ | 689 StatsCounter* count_of_CODE_AGE_##name() \ |
| 684 { return &count_of_CODE_AGE_##name##_; } \ | 690 { return &count_of_CODE_AGE_##name##_; } \ |
| 685 StatsCounter* size_of_CODE_AGE_##name() \ | 691 StatsCounter* size_of_CODE_AGE_##name() \ |
| 686 { return &size_of_CODE_AGE_##name##_; } | 692 { return &size_of_CODE_AGE_##name##_; } |
| 687 CODE_AGE_LIST_COMPLETE(SC) | 693 CODE_AGE_LIST_COMPLETE(SC) |
| 688 #undef SC | 694 #undef SC |
| 689 | 695 |
| 690 enum Id { | 696 enum Id { |
| 691 #define RATE_ID(name, caption) k_##name, | 697 #define RATE_ID(name, caption, scale) k_##name, |
| 692 HISTOGRAM_TIMER_LIST(RATE_ID) | 698 HISTOGRAM_TIMER_LIST(RATE_ID) |
| 693 #undef RATE_ID | 699 #undef RATE_ID |
| 694 #define AGGREGATABLE_ID(name, caption) k_##name, | 700 #define AGGREGATABLE_ID(name, caption) k_##name, |
| 695 AGGREGATABLE_HISTOGRAM_TIMER_LIST(AGGREGATABLE_ID) | 701 AGGREGATABLE_HISTOGRAM_TIMER_LIST(AGGREGATABLE_ID) |
| 696 #undef AGGREGATABLE_ID | 702 #undef AGGREGATABLE_ID |
| 697 #define PERCENTAGE_ID(name, caption) k_##name, | 703 #define PERCENTAGE_ID(name, caption) k_##name, |
| 698 HISTOGRAM_PERCENTAGE_LIST(PERCENTAGE_ID) | 704 HISTOGRAM_PERCENTAGE_LIST(PERCENTAGE_ID) |
| 699 #undef PERCENTAGE_ID | 705 #undef PERCENTAGE_ID |
| 700 #define MEMORY_ID(name, caption) k_##name, | 706 #define MEMORY_ID(name, caption) k_##name, |
| 701 HISTOGRAM_MEMORY_LIST(MEMORY_ID) | 707 HISTOGRAM_MEMORY_LIST(MEMORY_ID) |
| 702 #undef MEMORY_ID | 708 #undef MEMORY_ID |
| 703 #define COUNTER_ID(name, caption) k_##name, | 709 #define COUNTER_ID(name, caption) k_##name, |
| 704 STATS_COUNTER_LIST_1(COUNTER_ID) | 710 STATS_COUNTER_LIST_1(COUNTER_ID) STATS_COUNTER_LIST_2( |
| 705 STATS_COUNTER_LIST_2(COUNTER_ID) | 711 COUNTER_ID) |
| 706 #undef COUNTER_ID | 712 #undef COUNTER_ID |
| 707 #define COUNTER_ID(name) kCountOf##name, kSizeOf##name, | 713 #define COUNTER_ID(name) kCountOf##name, kSizeOf##name, |
| 708 INSTANCE_TYPE_LIST(COUNTER_ID) | 714 INSTANCE_TYPE_LIST(COUNTER_ID) |
| 709 #undef COUNTER_ID | 715 #undef COUNTER_ID |
| 710 #define COUNTER_ID(name) kCountOfCODE_TYPE_##name, \ | 716 #define COUNTER_ID(name) kCountOfCODE_TYPE_##name, \ |
| 711 kSizeOfCODE_TYPE_##name, | 717 kSizeOfCODE_TYPE_##name, |
| 712 CODE_KIND_LIST(COUNTER_ID) | 718 CODE_KIND_LIST(COUNTER_ID) |
| 713 #undef COUNTER_ID | 719 #undef COUNTER_ID |
| 714 #define COUNTER_ID(name) kCountOfFIXED_ARRAY__##name, \ | 720 #define COUNTER_ID(name) kCountOfFIXED_ARRAY__##name, \ |
| 715 kSizeOfFIXED_ARRAY__##name, | 721 kSizeOfFIXED_ARRAY__##name, |
| 716 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(COUNTER_ID) | 722 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(COUNTER_ID) |
| 717 #undef COUNTER_ID | 723 #undef COUNTER_ID |
| 718 #define COUNTER_ID(name) kCountOfCODE_AGE__##name, \ | 724 #define COUNTER_ID(name) kCountOfCODE_AGE__##name, \ |
| 719 kSizeOfCODE_AGE__##name, | 725 kSizeOfCODE_AGE__##name, |
| 720 CODE_AGE_LIST_COMPLETE(COUNTER_ID) | 726 CODE_AGE_LIST_COMPLETE(COUNTER_ID) |
| 721 #undef COUNTER_ID | 727 #undef COUNTER_ID |
| 722 stats_counter_count | 728 stats_counter_count |
|
vogelheim
2015/01/26 14:46:50
This (and above) is a super strange indent.
I tak
Yang
2015/01/26 15:09:07
Done.
| |
| 723 }; | 729 }; |
| 724 | 730 |
| 725 void ResetCounters(); | 731 void ResetCounters(); |
| 726 void ResetHistograms(); | 732 void ResetHistograms(); |
| 727 | 733 |
| 728 private: | 734 private: |
| 729 #define HR(name, caption, min, max, num_buckets) Histogram name##_; | 735 #define HR(name, caption, min, max, num_buckets) Histogram name##_; |
| 730 HISTOGRAM_RANGE_LIST(HR) | 736 HISTOGRAM_RANGE_LIST(HR) |
| 731 #undef HR | 737 #undef HR |
| 732 | 738 |
| 733 #define HT(name, caption) \ | 739 #define HT(name, caption, scale) HistogramTimer name##_; |
| 734 HistogramTimer name##_; | |
| 735 HISTOGRAM_TIMER_LIST(HT) | 740 HISTOGRAM_TIMER_LIST(HT) |
| 736 #undef HT | 741 #undef HT |
| 737 | 742 |
| 738 #define AHT(name, caption) \ | 743 #define AHT(name, caption) \ |
| 739 AggregatableHistogramTimer name##_; | 744 AggregatableHistogramTimer name##_; |
| 740 AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT) | 745 AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT) |
| 741 #undef AHT | 746 #undef AHT |
| 742 | 747 |
| 743 #define HP(name, caption) \ | 748 #define HP(name, caption) \ |
| 744 Histogram name##_; | 749 Histogram name##_; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 783 friend class Isolate; | 788 friend class Isolate; |
| 784 | 789 |
| 785 explicit Counters(Isolate* isolate); | 790 explicit Counters(Isolate* isolate); |
| 786 | 791 |
| 787 DISALLOW_IMPLICIT_CONSTRUCTORS(Counters); | 792 DISALLOW_IMPLICIT_CONSTRUCTORS(Counters); |
| 788 }; | 793 }; |
| 789 | 794 |
| 790 } } // namespace v8::internal | 795 } } // namespace v8::internal |
| 791 | 796 |
| 792 #endif // V8_COUNTERS_H_ | 797 #endif // V8_COUNTERS_H_ |
| OLD | NEW |