Skip to content

Commit 48d6a58

Browse files
committed
Use inline functions instead of magic constants.
1 parent 123171a commit 48d6a58

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

Objects/dictobject.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4979,7 +4979,7 @@ init_inline_values(PyObject *obj, PyTypeObject *tp)
49794979
for (int i = 0; i < size; i++) {
49804980
values->values[i] = NULL;
49814981
}
4982-
((PyDictValues **)obj)[-4] = values;
4982+
*_PyObject_ValuesPointer(obj) = values;
49834983
return 0;
49844984
}
49854985

@@ -5056,9 +5056,8 @@ _PyObject_StoreInstanceAttribute(PyObject *obj, PyDictValues *values,
50565056
if (dict == NULL) {
50575057
return -1;
50585058
}
5059-
((PyDictValues **)obj)[-4] = NULL;
5060-
assert(_PyObject_DictPointer(obj) == ((PyObject **)obj)-3);
5061-
((PyObject **)obj)[-3] = dict;
5059+
*_PyObject_ValuesPointer(obj) = NULL;
5060+
*_PyObject_ManagedDictPointer(obj) = dict;
50625061
return PyDict_SetItem(dict, name, value);
50635062
}
50645063
PyObject *old_value = values->values[ix];

Objects/object.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,9 @@ _PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method)
11851185
}
11861186
}
11871187
PyDictValues *values;
1188-
if ((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) && (values = ((PyDictValues **)obj)[-4])) {
1188+
if ((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) &&
1189+
(values = *_PyObject_ValuesPointer(obj)))
1190+
{
11891191
assert(*_PyObject_DictPointer(obj) == NULL);
11901192
PyObject *attr = _PyObject_GetInstanceAttribute(obj, values, name);
11911193
if (attr != NULL) {
@@ -1286,7 +1288,9 @@ _PyObject_GenericGetAttrWithDict(PyObject *obj, PyObject *name,
12861288
}
12871289
}
12881290
if (dict == NULL) {
1289-
if ((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) && ((PyDictValues **)obj)[-4]) {
1291+
if ((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) &&
1292+
*_PyObject_ValuesPointer(obj))
1293+
{
12901294
PyDictValues **values_ptr = _PyObject_ValuesPointer(obj);
12911295
if (PyUnicode_CheckExact(name)) {
12921296
assert(*_PyObject_DictPointer(obj) == NULL);

Python/ceval.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3601,7 +3601,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int thr
36013601
DEOPT_IF(tp->tp_version_tag != cache1->tp_version, LOAD_ATTR);
36023602
assert(tp->tp_dictoffset < 0);
36033603
assert(tp->tp_flags & Py_TPFLAGS_MANAGED_DICT);
3604-
PyDictValues *values = ((PyDictValues **)owner)[-4];
3604+
PyDictValues *values = *_PyObject_ValuesPointer(owner);
36053605
DEOPT_IF(values == NULL, LOAD_ATTR);
36063606
res = values->values[cache0->index];
36073607
DEOPT_IF(res == NULL, LOAD_ATTR);
@@ -4385,7 +4385,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int thr
43854385

43864386
DEOPT_IF(self_cls->tp_version_tag != cache1->tp_version, LOAD_METHOD);
43874387
assert(self_cls->tp_flags & Py_TPFLAGS_MANAGED_DICT);
4388-
PyDictObject *dict = ((PyDictObject **)self)[-3];
4388+
PyDictObject *dict = *(PyDictObject**)_PyObject_ManagedDictPointer(self);
43894389
DEOPT_IF(dict != NULL, LOAD_METHOD);
43904390
DEOPT_IF(((PyHeapTypeObject *)self_cls)->ht_cached_keys->dk_version != cache1->dk_version_or_hint, LOAD_METHOD);
43914391
STAT_INC(LOAD_METHOD, hit);

0 commit comments

Comments
 (0)