(self, address, slot=None)
| 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) |
no test coverage detected