Index: src/heap/object-stats.cc |
diff --git a/src/heap/object-stats.cc b/src/heap/object-stats.cc |
index 67751696e06b69c0e455df571239861a7e3463bd..9f534a20e4ccf8850dc6ea5fd25e906a4eb63eb1 100644 |
--- a/src/heap/object-stats.cc |
+++ b/src/heap/object-stats.cc |
@@ -551,6 +551,26 @@ void ObjectStatsCollector::RecordSharedFunctionInfoDetails( |
RecordFixedArrayHelper(sfi, optimized_code_map, OPTIMIZED_CODE_MAP_SUB_TYPE, |
0); |
// Optimized code map should be small, so skip accounting. |
+ int len = optimized_code_map->length(); |
+ for (int i = SharedFunctionInfo::kEntriesStart; i < len; |
+ i += SharedFunctionInfo::kEntryLength) { |
+ Object* slot = |
+ optimized_code_map->get(i + SharedFunctionInfo::kLiteralsOffset); |
+ LiteralsArray* literals = nullptr; |
+ if (slot->IsWeakCell()) { |
+ WeakCell* cell = WeakCell::cast(slot); |
+ if (!cell->cleared()) { |
+ literals = LiteralsArray::cast(cell->value()); |
+ } |
+ } else { |
+ literals = LiteralsArray::cast(slot); |
+ } |
+ if (literals != nullptr) { |
+ RecordFixedArrayHelper(sfi, literals, LITERALS_ARRAY_SUB_TYPE, 0); |
+ RecordFixedArrayHelper(sfi, literals->feedback_vector(), |
+ TYPE_FEEDBACK_VECTOR_SUB_TYPE, 0); |
+ } |
+ } |
} |
} |