mirror of
https://github.com/python/cpython
synced 2024-10-14 19:10:03 +00:00
Significant speedup in new-style object creation: in slot_tp_new(),
intern the string "__new__" so we can call PyObject_GetAttr() rather than PyObject_GetAttrString(). (Though it's a mystery why slot_tp_new is being called when a class doesn't define __new__. I'll look into that tomorrow.) 2.2 backport candidate (but I won't do it).
This commit is contained in:
parent
617e2305ee
commit
7bed213224
|
@ -3641,10 +3641,17 @@ slot_tp_init(PyObject *self, PyObject *args, PyObject *kwds)
|
|||
static PyObject *
|
||||
slot_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PyObject *func = PyObject_GetAttrString((PyObject *)type, "__new__");
|
||||
static PyObject *new_str;
|
||||
PyObject *func;
|
||||
PyObject *newargs, *x;
|
||||
int i, n;
|
||||
|
||||
if (new_str == NULL) {
|
||||
new_str = PyString_InternFromString("__new__");
|
||||
if (new_str == NULL)
|
||||
return NULL;
|
||||
}
|
||||
func = PyObject_GetAttr((PyObject *)type, new_str);
|
||||
if (func == NULL)
|
||||
return NULL;
|
||||
assert(PyTuple_Check(args));
|
||||
|
|
Loading…
Reference in a new issue