MCPcopy Index your code
hub / github.com/nodejs/node / V8Heap

Class V8Heap

deps/v8/tools/grokdump.py:1783–1964  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1781
1782
1783class V8Heap(object):
1784 CLASS_MAP = {
1785 "SYMBOL_TYPE": SeqString,
1786 "SEQ_TWO_BYTE_STRING_TYPE": SeqString,
1787 "SEQ_ONE_BYTE_STRING_TYPE": SeqString,
1788 "INTERNALIZED_TWO_BYTE_STRING_TYPE": SeqString,
1789 "INTERNALIZED_ONE_BYTE_STRING_TYPE": SeqString,
1790 "CONS_TWO_BYTE_STRING_TYPE": ConsString,
1791 "CONS_ONE_BYTE_STRING_TYPE": ConsString,
1792 "EXTERNAL_TWO_BYTE_STRING_TYPE": ExternalString,
1793 "EXTERNAL_ONE_BYTE_STRING_TYPE": ExternalString,
1794 "EXTERNAL_INTERNALIZED_TWO_BYTE_STRING_TYPE": ExternalString,
1795 "EXTERNAL_INTERNALIZED_ONE_BYTE_STRING_TYPE": ExternalString,
1796 "MAP_TYPE": Map,
1797 "ODDBALL_TYPE": Oddball,
1798 "FIXED_ARRAY_TYPE": FixedArray,
1799 "HASH_TABLE_TYPE": FixedArray,
1800 "OBJECT_BOILERPLATE_DESCRIPTION_TYPE": FixedArray,
1801 "SCOPE_INFO_TYPE": FixedArray,
1802 "JS_FUNCTION_TYPE": JSFunction,
1803 "SHARED_FUNCTION_INFO_TYPE": SharedFunctionInfo,
1804 "SCRIPT_TYPE": Script,
1805 "CODE_CACHE_TYPE": CodeCache,
1806 "CODE_TYPE": Code,
1807 }
1808
1809 def __init__(self, reader, stack_map):
1810 self.reader = reader
1811 self.stack_map = stack_map
1812 self.objects = {}
1813
1814 def FindObjectOrSmi(self, tagged_address):
1815 if self.IsSmi(tagged_address): return self.SmiUntag(tagged_address)
1816 return self.FindObject(tagged_address)
1817
1818 def FindObject(self, tagged_address):
1819 if tagged_address in self.objects:
1820 return self.objects[tagged_address]
1821 if not self.IsTaggedObjectAddress(tagged_address): return None
1822 address = tagged_address - 1
1823 if not self.reader.IsValidAddress(address): return None
1824 map_tagged_address = self.reader.ReadTagged(address)
1825 if tagged_address == map_tagged_address:
1826 # Meta map?
1827 meta_map = Map(self, None, address)
1828 instance_type_name = INSTANCE_TYPES.get(meta_map.instance_type)
1829 if instance_type_name != "MAP_TYPE": return None
1830 meta_map.map = meta_map
1831 object = meta_map
1832 else:
1833 map = self.FindMap(map_tagged_address)
1834 if map is None: return None
1835 instance_type_name = INSTANCE_TYPES.get(map.instance_type)
1836 if instance_type_name is None: return None
1837 cls = V8Heap.CLASS_MAP.get(instance_type_name, HeapObject)
1838 object = cls(self, map, address)
1839 self.objects[tagged_address] = object
1840 return object

Callers 2

__init__Method · 0.85
_AnalyzeMinidumpFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…