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

Unified Diff: src/heap/object-stats.h

Issue 2181623002: [heap] ObjectStats: Cleanup and more FIXED_ARRAY sub types (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/heap/object-stats.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/object-stats.h
diff --git a/src/heap/object-stats.h b/src/heap/object-stats.h
index cf28104382cdd78972f06205dd6f87d32ab43e81..345c6bd140ccd12d15de6e34b3e383c6a91e00e4 100644
--- a/src/heap/object-stats.h
+++ b/src/heap/object-stats.h
@@ -60,19 +60,22 @@ class ObjectStats {
size_histogram_[code_age_index][idx]++;
}
- void RecordFixedArraySubTypeStats(FixedArrayBase* array, int array_sub_type,
+ bool RecordFixedArraySubTypeStats(FixedArrayBase* array, int array_sub_type,
size_t size, size_t over_allocated) {
auto it = visited_fixed_array_sub_types_.insert(array);
- if (!it.second) return;
+ if (!it.second) return false;
DCHECK(array_sub_type <= LAST_FIXED_ARRAY_SUB_TYPE);
object_counts_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type]++;
object_sizes_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type] += size;
size_histogram_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type]
[HistogramIndexFromSize(size)]++;
- over_allocated_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type] +=
- over_allocated;
- over_allocated_histogram_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type]
- [HistogramIndexFromSize(over_allocated)]++;
+ if (over_allocated > 0) {
+ over_allocated_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type] +=
+ over_allocated;
+ over_allocated_histogram_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type]
+ [HistogramIndexFromSize(over_allocated)]++;
+ }
+ return true;
}
size_t object_count_last_gc(size_t index) {
@@ -117,26 +120,31 @@ class ObjectStats {
class ObjectStatsCollector {
public:
- static void CollectStatistics(ObjectStats* stats, HeapObject* obj);
+ ObjectStatsCollector(Heap* heap, ObjectStats* stats)
+ : heap_(heap), stats_(stats) {}
+
+ void CollectGlobalStatistics();
+ void CollectStatistics(HeapObject* obj);
private:
- static void RecordMapDetails(ObjectStats* stats, Heap* heap, HeapObject* obj);
- static void RecordCodeDetails(ObjectStats* stats, Heap* heap,
- HeapObject* obj);
- static void RecordSharedFunctionInfoDetails(ObjectStats* stats, Heap* heap,
- HeapObject* obj);
- static void RecordFixedArrayDetails(ObjectStats* stats, Heap* heap,
- HeapObject* obj);
-
- static void RecordJSObjectDetails(ObjectStats* stats, Heap* heap,
- JSObject* object);
- static void RecordJSWeakCollectionDetails(ObjectStats* stats, Heap* heap,
- JSWeakCollection* obj);
- static void RecordScriptDetails(ObjectStats* stats, Heap* heap, Script* obj);
-
- static void RecordFixedArrayHelper(ObjectStats* stats, Heap* heap,
- HeapObject* parent, FixedArray* array,
- int subtype, size_t overhead);
+ void RecordCodeDetails(Code* code);
+ void RecordFixedArrayDetails(FixedArray* array);
+ void RecordJSCollectionDetails(JSObject* obj);
+ void RecordJSFunctionDetails(JSFunction* function);
+ void RecordJSObjectDetails(JSObject* object);
+ void RecordJSWeakCollectionDetails(JSWeakCollection* obj);
+ void RecordMapDetails(Map* map);
+ void RecordScriptDetails(Script* obj);
+ void RecordSharedFunctionInfoDetails(SharedFunctionInfo* sfi);
+
+ bool RecordFixedArrayHelper(HeapObject* parent, FixedArray* array,
+ int subtype, size_t overhead);
+ void RecursivelyRecordFixedArrayHelper(HeapObject* parent, FixedArray* array,
+ int subtype);
+ template <class HashTable>
+ void RecordHashTableHelper(HeapObject* parent, HashTable* array, int subtype);
+ Heap* heap_;
+ ObjectStats* stats_;
};
} // namespace internal
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/heap/object-stats.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698