mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-45340: Don't create object dictionaries unless actually needed (GH-28802)
* Never change types' cached keys. It could invalidate inline attribute objects. * Lazily create object dictionaries. * Update specialization of LOAD/STORE_ATTR. * Don't update shared keys version for deletion of value. * Update gdb support to handle instance values. * Rename SPLIT_KEYS opcodes to INSTANCE_VALUE.
This commit is contained in:
parent
97308dfcdc
commit
a8b9350964
18 changed files with 721 additions and 400 deletions
|
@ -994,8 +994,8 @@ class DictTest(unittest.TestCase):
|
|||
|
||||
@support.cpython_only
|
||||
def test_splittable_setdefault(self):
|
||||
"""split table must be combined when setdefault()
|
||||
breaks insertion order"""
|
||||
"""split table must keep correct insertion
|
||||
order when attributes are adding using setdefault()"""
|
||||
a, b = self.make_shared_key_dict(2)
|
||||
|
||||
a['a'] = 1
|
||||
|
@ -1005,7 +1005,6 @@ class DictTest(unittest.TestCase):
|
|||
size_b = sys.getsizeof(b)
|
||||
b['a'] = 1
|
||||
|
||||
self.assertGreater(size_b, size_a)
|
||||
self.assertEqual(list(a), ['x', 'y', 'z', 'a', 'b'])
|
||||
self.assertEqual(list(b), ['x', 'y', 'z', 'b', 'a'])
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue