mirror of
https://github.com/python/cpython.git
synced 2026-04-14 07:41:00 +00:00
[3.14] gh-134043: use stackrefs for dict lookup in _PyObject_GetMethodStackRef (GH-136412) (#146077)
(cherry picked from commit cbe6ebe15b)
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
This commit is contained in:
parent
a005f323b7
commit
b3c2ef5f31
3 changed files with 91 additions and 19 deletions
|
|
@ -119,6 +119,8 @@ extern Py_ssize_t _Py_dict_lookup(PyDictObject *mp, PyObject *key, Py_hash_t has
|
|||
extern Py_ssize_t _Py_dict_lookup_threadsafe(PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject **value_addr);
|
||||
extern Py_ssize_t _Py_dict_lookup_threadsafe_stackref(PyDictObject *mp, PyObject *key, Py_hash_t hash, _PyStackRef *value_addr);
|
||||
|
||||
extern int _PyDict_GetMethodStackRef(PyDictObject *dict, PyObject *name, _PyStackRef *method);
|
||||
|
||||
extern Py_ssize_t _PyDict_LookupIndex(PyDictObject *, PyObject *);
|
||||
extern Py_ssize_t _PyDictKeys_StringLookup(PyDictKeysObject* dictkeys, PyObject *key);
|
||||
|
||||
|
|
|
|||
|
|
@ -782,6 +782,13 @@ _Py_TryXGetStackRef(PyObject **src, _PyStackRef *out)
|
|||
|
||||
#endif
|
||||
|
||||
#define PyStackRef_XSETREF(dst, src) \
|
||||
do { \
|
||||
_PyStackRef _tmp_dst_ref = (dst); \
|
||||
(dst) = (src); \
|
||||
PyStackRef_XCLOSE(_tmp_dst_ref); \
|
||||
} while(0)
|
||||
|
||||
// Like Py_VISIT but for _PyStackRef fields
|
||||
#define _Py_VISIT_STACKREF(ref) \
|
||||
do { \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue