Mercurial > cpython-lru_cache-weakref
diff Tools/gdb/libpython.py @ 76485:6e5855854a2e
Implement PEP 412: Key-sharing dictionaries (closes #13903)
Patch from Mark Shannon.
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Mon, 23 Apr 2012 11:24:50 -0400 |
| parents | 5e3a172bba89 |
| children | abcd29c9a791 |
line wrap: on
line diff
--- a/Tools/gdb/libpython.py Mon Apr 23 10:55:29 2012 -0400 +++ b/Tools/gdb/libpython.py Mon Apr 23 11:24:50 2012 -0400 @@ -634,9 +634,14 @@ Yields a sequence of (PyObjectPtr key, PyObjectPtr value) pairs, analagous to dict.iteritems() ''' - for i in safe_range(self.field('ma_mask') + 1): - ep = self.field('ma_table') + i - pyop_value = PyObjectPtr.from_pyobject_ptr(ep['me_value']) + keys = self.field('ma_keys') + values = self.field('ma_values') + for i in safe_range(keys['dk_size']): + ep = keys['dk_entries'].address + i + if long(values): + pyop_value = PyObjectPtr.from_pyobject_ptr(values[i]) + else: + pyop_value = PyObjectPtr.from_pyobject_ptr(ep['me_value']) if not pyop_value.is_null(): pyop_key = PyObjectPtr.from_pyobject_ptr(ep['me_key']) yield (pyop_key, pyop_value)
