(self, 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 |
| 1841 | |
| 1842 | def FindMap(self, tagged_address): |
| 1843 | address = self.FindMapAddress(tagged_address) |
no test coverage detected