(keys)
| 845 | |
| 846 | @staticmethod |
| 847 | def _get_entries(keys): |
| 848 | dk_nentries = int(keys['dk_nentries']) |
| 849 | dk_size = 1<<int(keys['dk_log2_size']) |
| 850 | |
| 851 | if dk_size <= 0xFF: |
| 852 | offset = dk_size |
| 853 | elif dk_size <= 0xFFFF: |
| 854 | offset = 2 * dk_size |
| 855 | elif dk_size <= 0xFFFFFFFF: |
| 856 | offset = 4 * dk_size |
| 857 | else: |
| 858 | offset = 8 * dk_size |
| 859 | |
| 860 | ent_addr = keys['dk_indices'].address |
| 861 | ent_addr = ent_addr.cast(_type_unsigned_char_ptr()) + offset |
| 862 | if int(keys['dk_kind']) == 0: # DICT_KEYS_GENERAL |
| 863 | ent_ptr_t = gdb.lookup_type('PyDictKeyEntry').pointer() |
| 864 | else: |
| 865 | ent_ptr_t = gdb.lookup_type('PyDictUnicodeEntry').pointer() |
| 866 | ent_addr = ent_addr.cast(ent_ptr_t) |
| 867 | |
| 868 | return ent_addr, dk_nentries |
| 869 | |
| 870 | |
| 871 | class PyListObjectPtr(PyObjectPtr): |
no test coverage detected