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

Method SenseObject

deps/v8/tools/grokdump.py:2141–2199  ·  view source on GitHub ↗
(self, address, slot=None)

Source from the content-addressed store, hash-verified

2139 return "Tagged<Smi>(%d)" % value
2140
2141 def SenseObject(self, address, slot=None):
2142 if self.IsFrameMarker(slot, address):
2143 return self.FrameMarkerName(address)
2144 if self.heap.IsSmi(address):
2145 return self.FormatSmi(address)
2146 if not self.heap.IsMaybeWeakTaggedAddress(address):
2147 return None
2148 tagged_address = address
2149 is_weak = self.heap.IsWeakTaggedAddress(address)
2150 if is_weak:
2151 tagged_address &= ~2
2152 if self.heap.IsPointerCompressed():
2153 # Interpret the first page as the read-only space in pointer-compression.
2154 page = self.GetPageAddress(tagged_address)
2155 tagged_page = page & 0xFFFFFFFF
2156 if tagged_page == 0:
2157 offset = self.GetPageOffset(tagged_address)
2158 if offset == 1 and is_weak:
2159 return "<cleared>"
2160 lookup_key = ("read_only_space", offset)
2161 known_obj_name = KNOWN_OBJECTS.get(lookup_key)
2162 if known_obj_name:
2163 return KnownObject(self, known_obj_name)
2164 known_map_info = KNOWN_MAPS.get(lookup_key)
2165 if known_map_info:
2166 known_map_type, known_map_name = known_map_info
2167 return KnownObject(self, known_map_name)
2168
2169 if self.IsInKnownOldSpace(tagged_address):
2170 offset = self.GetPageOffset(tagged_address)
2171 lookup_key = (self.ContainingKnownOldSpaceName(tagged_address), offset)
2172 known_obj_name = KNOWN_OBJECTS.get(lookup_key)
2173 if known_obj_name:
2174 return KnownObject(self, known_obj_name)
2175 known_map_info = KNOWN_MAPS.get(lookup_key)
2176 if known_map_info:
2177 known_map_type, known_map_name = known_map_info
2178 return KnownObject(self, known_map_name)
2179
2180 if self.IsInKnownMapSpace(tagged_address):
2181 known_map = self.SenseMap(tagged_address)
2182 if known_map:
2183 return known_map
2184
2185 found_obj = self.heap.FindObject(tagged_address)
2186 if found_obj:
2187 return found_obj
2188 address = tagged_address - 1
2189 if self.reader.IsValidAddress(address):
2190 map_tagged_address = self.reader.ReadTagged(address)
2191 map = self.SenseMap(map_tagged_address)
2192 if map is None:
2193 return None
2194 instance_type_name = INSTANCE_TYPES.get(map.instance_type)
2195 if instance_type_name is None:
2196 return None
2197 cls = V8Heap.CLASS_MAP.get(instance_type_name, HeapObject)
2198 return cls(self, map, address)

Callers 6

FindObjectOrSmiMethod · 0.95
InterpretMemoryMethod · 0.95
format_objectMethod · 0.80
do_display_objectMethod · 0.80

Calls 15

IsFrameMarkerMethod · 0.95
FrameMarkerNameMethod · 0.95
FormatSmiMethod · 0.95
GetPageAddressMethod · 0.95
GetPageOffsetMethod · 0.95
IsInKnownOldSpaceMethod · 0.95
IsInKnownMapSpaceMethod · 0.95
SenseMapMethod · 0.95
KnownObjectClass · 0.85
IsSmiMethod · 0.80

Tested by

no test coverage detected