Changeset 141666 in webkit
- Timestamp:
- Feb 1, 2013 4:51:38 PM (11 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r141643 r141666 1 2013-02-01 Jer Noble <jer.noble@apple.com> 2 3 LLDB: add synthetic provider for WTF::HashTable 4 https://bugs.webkit.org/show_bug.cgi?id=108718 5 6 Reviewed by Darin Adler. 7 8 Add a synthetic provider which will emit the contents of a given 9 WTF::HashTable. This allows clients using Xcode/lldb to enumerate 10 the hash contents. 11 12 * lldb/lldb_webkit.py: 13 (__lldb_init_module): 14 (__lldb_init_module.lldb_webkit): 15 (WTFHashTable_SummaryProvider): 16 (WTFVectorProvider.has_children): 17 (WTFHashTableProvider): 18 (WTFHashTableProvider.__init__): 19 (WTFHashTableProvider.num_children): 20 (WTFHashTableProvider.get_child_index): 21 (WTFHashTableProvider.get_child_at_index): 22 (WTFHashTableProvider.tableSize): 23 (WTFHashTableProvider.keyCount): 24 (WTFHashTableProvider.update): 25 (WTFHashTableProvider.has_children): 26 1 27 2013-02-01 Roger Fong <roger_fong@apple.com> 2 28 -
trunk/Tools/lldb/lldb_webkit.py
r133234 r141666 38 38 debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFAtomicString_SummaryProvider WTF::AtomicString') 39 39 debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFVector_SummaryProvider -x "WTF::Vector<.+>$"') 40 debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFHashTable_SummaryProvider -x "WTF::HashTable<.+>$"') 40 41 debugger.HandleCommand('type synthetic add -x "WTF::Vector<.+>$" --python-class lldb_webkit.WTFVectorProvider') 42 debugger.HandleCommand('type synthetic add -x "WTF::HashTable<.+>$" --python-class lldb_webkit.WTFHashTableProvider') 41 43 42 44 … … 58 60 provider = WTFVectorProvider(valobj, dict) 59 61 return "{ size = %d, capacity = %d }" % (provider.size, provider.capacity) 62 63 64 def WTFHashTable_SummaryProvider(valobj, dict): 65 provider = WTFHashTableProvider(valobj, dict) 66 return "{ tableSize = %d, keyCount = %d }" % (provider.tableSize(), provider.keyCount()) 60 67 61 68 # FIXME: Provide support for the following types: … … 191 198 def has_children(self): 192 199 return True 200 201 202 class WTFHashTableProvider: 203 def __init__(self, valobj, internal_dict): 204 self.valobj = valobj 205 self.update() 206 207 def num_children(self): 208 return self.tableSize() + 5 209 210 def get_child_index(self, name): 211 if name == "m_table": 212 return self.tableSize() 213 elif name == "m_tableSize": 214 return self.tableSize() + 1 215 elif name == "m_tableSizeMask": 216 return self.tableSize() + 2 217 elif name == "m_keyCount": 218 return self.tableSize() + 3 219 elif name == "m_deletedCount": 220 return self.tableSize() + 4 221 else: 222 return int(name.lstrip('[').rstrip(']')) 223 224 def get_child_at_index(self, index): 225 if index == self.tableSize(): 226 return self.valobj.GetChildMemberWithName('m_table') 227 elif index == self.tableSize() + 1: 228 return self.valobj.GetChildMemberWithName('m_tableSize') 229 elif index == self.tableSize() + 2: 230 return self.valobj.GetChildMemberWithName('m_tableSizeMask') 231 elif index == self.tableSize() + 3: 232 return self.valobj.GetChildMemberWithName('m_keyCount') 233 elif index == self.tableSize() + 4: 234 return self.valobj.GetChildMemberWithName('m_deletedCount') 235 elif index < self.tableSize(): 236 table = self.valobj.GetChildMemberWithName('m_table') 237 return table.CreateChildAtOffset('[' + str(index) + ']', index * self.data_size, self.data_type) 238 else: 239 return None 240 241 def tableSize(self): 242 return self.valobj.GetChildMemberWithName('m_tableSize').GetValueAsUnsigned(0) 243 244 def keyCount(self): 245 return self.valobj.GetChildMemberWithName('m_keyCount').GetValueAsUnsigned(0) 246 247 def update(self): 248 self.data_type = self.valobj.GetType().GetTemplateArgumentType(0) 249 self.data_size = self.data_type.GetByteSize() 250 251 def has_children(self): 252 return True
Note: See TracChangeset
for help on using the changeset viewer.