Lines Matching refs:HeapEntry
35 class HeapEntry;
70 HeapGraphEdge(Type type, const char* name, HeapEntry* from, HeapEntry* to);
71 HeapGraphEdge(Type type, int index, HeapEntry* from, HeapEntry* to);
83 V8_INLINE HeapEntry* from() const;
84 HeapEntry* to() const { return to_entry_; }
95 HeapEntry* to_entry_;
103 // HeapEntry instances represent an entity from the heap (or a special
105 class HeapEntry {
124 HeapEntry(HeapSnapshot* snapshot, int index, Type type, const char* name,
161 void VerifyReference(HeapGraphEdge::Type type, HeapEntry* entry,
165 HeapEntry* entry, HeapSnapshotGenerator* generator,
168 HeapEntry* entry, HeapSnapshotGenerator* generator,
171 HeapGraphEdge::Type type, HeapEntry* child,
178 const char* description, HeapEntry* child,
226 HeapEntry* root() const { return root_entry_; }
227 HeapEntry* gc_roots() const { return gc_roots_entry_; }
228 HeapEntry* gc_subroot(Root root) const {
231 std::deque<HeapEntry>& entries() { return entries_; }
232 const std::deque<HeapEntry>& entries() const { return entries_; }
247 void AddLocation(HeapEntry* entry, int scriptId, int line, int col);
248 HeapEntry* AddEntry(HeapEntry::Type type,
254 HeapEntry* GetEntryById(SnapshotObjectId id);
265 HeapEntry* root_entry_ = nullptr;
266 HeapEntry* gc_roots_entry_ = nullptr;
267 HeapEntry* gc_subroot_entries_[static_cast<int>(Root::kNumberOfRoots)];
271 std::deque<HeapEntry> entries_;
274 std::unordered_map<SnapshotObjectId, HeapEntry*> entries_by_id_cache_;
359 virtual HeapEntry* AllocateEntry(HeapThing ptr) = 0;
360 virtual HeapEntry* AllocateEntry(Smi smi) = 0;
382 HeapEntry* AllocateEntry(HeapThing ptr) override;
383 HeapEntry* AllocateEntry(Smi smi) override;
389 HeapEntry* AddEntry(Address address,
390 HeapEntry::Type type,
400 HeapEntry* AddEntry(HeapObject object);
401 HeapEntry* AddEntry(HeapObject object, HeapEntry::Type type,
405 HeapEntry::Type GetSystemEntryType(HeapObject object);
407 void ExtractLocation(HeapEntry* entry, HeapObject object);
408 void ExtractLocationForJSFunction(HeapEntry* entry, JSFunction func);
409 void ExtractReferences(HeapEntry* entry, HeapObject obj);
410 void ExtractJSGlobalProxyReferences(HeapEntry* entry, JSGlobalProxy proxy);
411 void ExtractJSObjectReferences(HeapEntry* entry, JSObject js_obj);
412 void ExtractStringReferences(HeapEntry* entry, String obj);
413 void ExtractSymbolReferences(HeapEntry* entry, Symbol symbol);
414 void ExtractJSCollectionReferences(HeapEntry* entry, JSCollection collection);
415 void ExtractJSWeakCollectionReferences(HeapEntry* entry,
417 void ExtractEphemeronHashTableReferences(HeapEntry* entry,
419 void ExtractContextReferences(HeapEntry* entry, Context context);
420 void ExtractMapReferences(HeapEntry* entry, Map map);
421 void ExtractSharedFunctionInfoReferences(HeapEntry* entry,
423 void ExtractScriptReferences(HeapEntry* entry, Script script);
424 void ExtractAccessorInfoReferences(HeapEntry* entry,
426 void ExtractAccessorPairReferences(HeapEntry* entry, AccessorPair accessors);
427 void ExtractCodeReferences(HeapEntry* entry, Code code);
428 void ExtractCellReferences(HeapEntry* entry, Cell cell);
429 void ExtractJSWeakRefReferences(HeapEntry* entry, JSWeakRef js_weak_ref);
430 void ExtractWeakCellReferences(HeapEntry* entry, WeakCell weak_cell);
431 void ExtractFeedbackCellReferences(HeapEntry* entry,
433 void ExtractPropertyCellReferences(HeapEntry* entry, PropertyCell cell);
434 void ExtractAllocationSiteReferences(HeapEntry* entry, AllocationSite site);
436 HeapEntry* entry, ArrayBoilerplateDescription value);
438 HeapEntry* entry, RegExpBoilerplateDescription value);
439 void ExtractJSArrayBufferReferences(HeapEntry* entry, JSArrayBuffer buffer);
440 void ExtractJSPromiseReferences(HeapEntry* entry, JSPromise promise);
441 void ExtractJSGeneratorObjectReferences(HeapEntry* entry,
443 void ExtractFixedArrayReferences(HeapEntry* entry, FixedArray array);
444 void ExtractNumberReference(HeapEntry* entry, Object number);
445 void ExtractBytecodeArrayReferences(HeapEntry* entry, BytecodeArray bytecode);
446 void ExtractScopeInfoReferences(HeapEntry* entry, ScopeInfo info);
447 void ExtractFeedbackVectorReferences(HeapEntry* entry,
449 void ExtractDescriptorArrayReferences(HeapEntry* entry,
452 void ExtractWeakArrayReferences(int header_size, HeapEntry* entry, T array);
453 void ExtractPropertyReferences(JSObject js_obj, HeapEntry* entry);
454 void ExtractAccessorPairProperty(HeapEntry* entry, Name key,
456 void ExtractElementReferences(JSObject js_obj, HeapEntry* entry);
457 void ExtractInternalReferences(JSObject js_obj, HeapEntry* entry);
462 void SetContextReference(HeapEntry* parent_entry, String reference_name,
464 void SetNativeBindReference(HeapEntry* parent_entry,
466 void SetElementReference(HeapEntry* parent_entry, int index, Object child);
467 void SetInternalReference(HeapEntry* parent_entry, const char* reference_name,
469 void SetInternalReference(HeapEntry* parent_entry, int index, Object child,
471 void SetHiddenReference(HeapObject parent_obj, HeapEntry* parent_entry,
474 HeapEntry* parent_entry, const char* reference_name, Object child_obj,
476 HeapEntry::ReferenceVerification verification = HeapEntry::kVerify);
477 void SetWeakReference(HeapEntry* parent_entry, int index, Object child_obj,
479 void SetPropertyReference(HeapEntry* parent_entry, Name reference_name,
484 PropertyKind kind, HeapEntry* parent_entry, Name reference_name,
495 base::Optional<HeapEntry::Type> type = {});
497 HeapEntry::Type type, int recursion_limit);
499 HeapEntry* GetEntry(Object obj);
534 HeapEntry* EntryForEmbedderGraphNode(EmbedderGraph::Node* node);
535 void MergeNodeIntoEntry(HeapEntry* entry, EmbedderGraph::Node* original_node,
557 using HeapEntriesMap = std::unordered_map<HeapThing, HeapEntry*>;
560 using SmiEntriesMap = std::unordered_map<int, HeapEntry*>;
570 HeapEntry* FindEntry(HeapThing ptr) {
575 HeapEntry* FindEntry(Smi smi) {
580 HeapEntry* AddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) {
581 HeapEntry* result =
592 HeapThing FindHeapThingForHeapEntry(HeapEntry* entry) {
608 HeapEntry* AddEntry(Smi smi, HeapEntriesAllocator* allocator) {
613 HeapEntry* FindOrAddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) {
614 HeapEntry* entry = FindEntry(ptr);
618 HeapEntry* FindOrAddEntry(Smi smi, HeapEntriesAllocator* allocator) {
619 HeapEntry* entry = FindEntry(smi);
635 // Mapping from HeapThing pointers to HeapEntry indices.
644 std::unordered_map<HeapEntry*, HeapThing> reverse_entries_map_;
673 V8_INLINE int to_node_index(const HeapEntry* e);
678 void SerializeNode(const HeapEntry* entry);