diff options
author | Jeroen Demeyer <J.Demeyer@UGent.be> | 2019-08-15 15:49:46 (GMT) |
---|---|---|
committer | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-08-15 15:49:46 (GMT) |
commit | 37806f404f57b234902f0c8de9a04647ad01b7f1 (patch) | |
tree | 9d78c5a0256784d19987b3a9fc72367d336da9fd | |
parent | 40dad9545aad4ede89abbab1c1beef5303d9573e (diff) | |
download | cpython-37806f404f57b234902f0c8de9a04647ad01b7f1.zip cpython-37806f404f57b234902f0c8de9a04647ad01b7f1.tar.gz cpython-37806f404f57b234902f0c8de9a04647ad01b7f1.tar.bz2 |
bpo-37207: enable vectorcall for type.__call__ (GH-14588)
Base PR for other PRs that want to play with `type.__call__` such as #13930 and #14589.
The author is really @markshannon I just made the PR.
https://bugs.python.org/issue37207
Automerge-Triggered-By: @encukou
-rw-r--r-- | Misc/NEWS.d/next/C API/2019-07-07-10-37-07.bpo-37207.SlVNky.rst | 3 | ||||
-rw-r--r-- | Objects/typeobject.c | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/Misc/NEWS.d/next/C API/2019-07-07-10-37-07.bpo-37207.SlVNky.rst b/Misc/NEWS.d/next/C API/2019-07-07-10-37-07.bpo-37207.SlVNky.rst new file mode 100644 index 0000000..8df7661 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2019-07-07-10-37-07.bpo-37207.SlVNky.rst @@ -0,0 +1,3 @@ +The vectorcall protocol is now enabled for ``type`` objects: set +``tp_vectorcall`` to a vectorcall function to be used instead of ``tp_new`` +and ``tp_init`` when calling the class itself. diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 9e5709a..0ca7dcb 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -3614,7 +3614,7 @@ PyTypeObject PyType_Type = { sizeof(PyHeapTypeObject), /* tp_basicsize */ sizeof(PyMemberDef), /* tp_itemsize */ (destructor)type_dealloc, /* tp_dealloc */ - 0, /* tp_vectorcall_offset */ + offsetof(PyTypeObject, tp_vectorcall), /* tp_vectorcall_offset */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_as_async */ @@ -3629,7 +3629,8 @@ PyTypeObject PyType_Type = { (setattrofunc)type_setattro, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_BASETYPE | Py_TPFLAGS_TYPE_SUBCLASS, /* tp_flags */ + Py_TPFLAGS_BASETYPE | Py_TPFLAGS_TYPE_SUBCLASS | + _Py_TPFLAGS_HAVE_VECTORCALL, /* tp_flags */ type_doc, /* tp_doc */ (traverseproc)type_traverse, /* tp_traverse */ (inquiry)type_clear, /* tp_clear */ |