Index: src/heap.h |
diff --git a/src/heap.h b/src/heap.h |
index 08c91a41d2a755e41f4ad33c8025ec34c0235380..f12610f0eb4cf4a5474724783d04556ab4261554 100644 |
--- a/src/heap.h |
+++ b/src/heap.h |
@@ -1600,10 +1600,23 @@ class Heap { |
global_ic_age_ = (global_ic_age_ + 1) & SharedFunctionInfo::ICAgeBits::kMax; |
} |
- void RecordObjectStats(InstanceType type, size_t size) { |
+ enum { |
Michael Starzinger
2012/07/17 10:48:16
Can we have a short comment above this enum descri
danno
2012/07/17 11:57:10
Done.
|
+ FIRST_CODE_KIND_SUB_TYPE = LAST_TYPE + 1, |
+ OBJECT_STATS_COUNT = FIRST_CODE_KIND_SUB_TYPE + Code::LAST_CODE_KIND + 1 |
+ }; |
+ |
+ void RecordObjectStats(InstanceType type, int sub_type, size_t size) { |
ASSERT(type <= LAST_TYPE); |
- object_counts_[type]++; |
- object_sizes_[type] += size; |
+ if (sub_type < 0) { |
+ object_counts_[type]++; |
+ object_sizes_[type] += size; |
+ } else { |
+ if (type == CODE_TYPE) { |
+ ASSERT(sub_type <= Code::LAST_CODE_KIND); |
+ object_counts_[FIRST_CODE_KIND_SUB_TYPE + sub_type]++; |
+ object_sizes_[FIRST_CODE_KIND_SUB_TYPE + sub_type] += size; |
+ } |
+ } |
} |
void CheckpointObjectStats(); |
@@ -2008,10 +2021,10 @@ class Heap { |
static const int kInitialNumberStringCacheSize = 256; |
// Object counts and used memory by InstanceType |
- size_t object_counts_[LAST_TYPE + 1]; |
- size_t object_counts_last_time_[LAST_TYPE + 1]; |
- size_t object_sizes_[LAST_TYPE + 1]; |
- size_t object_sizes_last_time_[LAST_TYPE + 1]; |
+ size_t object_counts_[OBJECT_STATS_COUNT]; |
+ size_t object_counts_last_time_[OBJECT_STATS_COUNT]; |
+ size_t object_sizes_[OBJECT_STATS_COUNT]; |
+ size_t object_sizes_last_time_[OBJECT_STATS_COUNT]; |
// Maximum GC pause. |
int max_gc_pause_; |