diff options
author | Mark Shannon <mark@hotpy.org> | 2021-08-09 09:40:21 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-09 09:40:21 (GMT) |
commit | ac75f6bdd4748b3378dd321f862d13aa1898f77a (patch) | |
tree | dacf952f54673797cd885c3da50e06dc358468ac /Include/internal/pycore_code.h | |
parent | b854557b49083d8625a433eb36aacb0c87d67c52 (diff) | |
download | cpython-ac75f6bdd4748b3378dd321f862d13aa1898f77a.zip cpython-ac75f6bdd4748b3378dd321f862d13aa1898f77a.tar.gz cpython-ac75f6bdd4748b3378dd321f862d13aa1898f77a.tar.bz2 |
bpo-44826: Specialize STORE_ATTR (GH-27590)
* Generalize cache names for LOAD_ATTR to allow store and delete specializations.
* Factor out specialization of attribute dictionary access.
* Specialize STORE_ATTR.
Diffstat (limited to 'Include/internal/pycore_code.h')
-rw-r--r-- | Include/internal/pycore_code.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 312939e..3d8f9c2 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -23,7 +23,7 @@ typedef struct { typedef struct { uint32_t tp_version; uint32_t dk_version_or_hint; -} _PyLoadAttrCache; +} _PyAttrCache; typedef struct { uint32_t module_keys_version; @@ -43,7 +43,7 @@ typedef struct { typedef union { _PyEntryZero zero; _PyAdaptiveEntry adaptive; - _PyLoadAttrCache load_attr; + _PyAttrCache attr; _PyLoadGlobalCache load_global; } SpecializedCacheEntry; @@ -297,6 +297,7 @@ cache_backoff(_PyAdaptiveEntry *entry) { /* Specialization functions */ int _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache); +int _Py_Specialize_StoreAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache); int _Py_Specialize_LoadGlobal(PyObject *globals, PyObject *builtins, _Py_CODEUNIT *instr, PyObject *name, SpecializedCacheEntry *cache); int _Py_Specialize_BinarySubscr(PyObject *sub, PyObject *container, _Py_CODEUNIT *instr); |