diff options
author | Georg Brandl <georg@python.org> | 2008-05-28 11:21:39 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-28 11:21:39 (GMT) |
commit | 74a1deaab360e118fa5f4621fd30a4ef4cc5a53e (patch) | |
tree | 7624b50a6c6f2b46c4ca7c3a9170f3d7f161ad51 /Objects | |
parent | 88eeef35d7795ec427f61e67f427dccaeabc0d11 (diff) | |
download | cpython-74a1deaab360e118fa5f4621fd30a4ef4cc5a53e.zip cpython-74a1deaab360e118fa5f4621fd30a4ef4cc5a53e.tar.gz cpython-74a1deaab360e118fa5f4621fd30a4ef4cc5a53e.tar.bz2 |
#2989: add PyType_Modified().
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/typeobject.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 2ea3d29..151ea69 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -32,7 +32,6 @@ struct method_cache_entry { static struct method_cache_entry method_cache[1 << MCACHE_SIZE_EXP]; static unsigned int next_version_tag = 0; -static void type_modified(PyTypeObject *); unsigned int PyType_ClearCache(void) @@ -47,12 +46,12 @@ PyType_ClearCache(void) } next_version_tag = 0; /* mark all version tags as invalid */ - type_modified(&PyBaseObject_Type); + PyType_Modified(&PyBaseObject_Type); return cur_version_tag; } -static void -type_modified(PyTypeObject *type) +void +PyType_Modified(PyTypeObject *type) { /* Invalidate any cached data for the specified type and all subclasses. This function is called after the base @@ -86,7 +85,7 @@ type_modified(PyTypeObject *type) ref = PyList_GET_ITEM(raw, i); ref = PyWeakref_GET_OBJECT(ref); if (ref != Py_None) { - type_modified((PyTypeObject *)ref); + PyType_Modified((PyTypeObject *)ref); } } } @@ -172,7 +171,7 @@ assign_version_tag(PyTypeObject *type) Py_INCREF(Py_None); } /* mark all version tags as invalid */ - type_modified(&PyBaseObject_Type); + PyType_Modified(&PyBaseObject_Type); return 1; } bases = type->tp_bases; @@ -300,7 +299,7 @@ type_set_module(PyTypeObject *type, PyObject *value, void *context) return -1; } - type_modified(type); + PyType_Modified(type); return PyDict_SetItemString(type->tp_dict, "__module__", value); } @@ -328,7 +327,7 @@ type_set_abstractmethods(PyTypeObject *type, PyObject *value, void *context) int res = PyDict_SetItemString(type->tp_dict, "__abstractmethods__", value); if (res == 0) { - type_modified(type); + PyType_Modified(type); if (value && PyObject_IsTrue(value)) { type->tp_flags |= Py_TPFLAGS_IS_ABSTRACT; } @@ -1621,7 +1620,7 @@ mro_internal(PyTypeObject *type) from the custom MRO */ type_mro_modified(type, type->tp_bases); - type_modified(type); + PyType_Modified(type); return 0; } @@ -6092,7 +6091,7 @@ update_slot(PyTypeObject *type, PyObject *name) update_subclasses() recursion below, but carefully: they each have their own conditions on which to stop recursing into subclasses. */ - type_modified(type); + PyType_Modified(type); init_slotdefs(); pp = ptrs; |