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:
Guido van Rossum 2002-08-08 21:57:53 +00:00
parent 617e2305ee
commit 7bed213224

View file

@ -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));