Neil Schemenauer: small fixes for GC

This commit is contained in:
Guido van Rossum 2000-07-01 01:00:38 +00:00
parent ce8e1dc395
commit 4cc6ac7b87
7 changed files with 17 additions and 13 deletions

View file

@ -128,6 +128,7 @@ class_dealloc(op)
Py_XDECREF(op->cl_getattr);
Py_XDECREF(op->cl_setattr);
Py_XDECREF(op->cl_delattr);
op = (PyClassObject *) PyObject_AS_GC(op);
PyObject_DEL(op);
}
@ -473,6 +474,7 @@ PyInstance_New(class, arg, kw)
inst->in_dict = PyDict_New();
PyObject_GC_Init(inst);
if (inst->in_dict == NULL) {
inst = (PyInstanceObject *) PyObject_AS_GC(inst);
PyObject_DEL(inst);
return NULL;
}
@ -588,6 +590,7 @@ instance_dealloc(inst)
#endif /* Py_TRACE_REFS */
Py_DECREF(inst->in_class);
Py_XDECREF(inst->in_dict);
inst = (PyInstanceObject *) PyObject_AS_GC(inst);
PyObject_DEL(inst);
}
@ -1763,6 +1766,7 @@ PyMethod_Fini()
while (free_list) {
PyMethodObject *im = free_list;
free_list = (PyMethodObject *)(im->im_self);
im = (PyMethodObject *) PyObject_AS_GC(im);
PyObject_DEL(im);
}
}

View file

@ -472,6 +472,7 @@ dict_dealloc(mp)
}
if (mp->ma_table != NULL)
PyMem_DEL(mp->ma_table);
mp = (dictobject *) PyObject_AS_GC(mp);
PyObject_DEL(mp);
Py_TRASHCAN_SAFE_END(mp)
}

View file

@ -172,6 +172,7 @@ func_dealloc(op)
Py_DECREF(op->func_name);
Py_XDECREF(op->func_defaults);
Py_XDECREF(op->func_doc);
op = (PyFunctionObject *) PyObject_AS_GC(op);
PyObject_DEL(op);
}

View file

@ -209,6 +209,7 @@ list_dealloc(op)
}
PyMem_FREE(op->ob_item);
}
op = (PyListObject *) PyObject_AS_GC(op);
PyObject_DEL(op);
Py_TRASHCAN_SAFE_END(op)
}

View file

@ -171,14 +171,11 @@ _PyObject_Del(op)
PyObject *op;
{
#ifdef WITH_CYCLE_GC
if (PyType_IS_GC(op->ob_type)) {
PyGC_Head *g = PyObject_AS_GC(op);
PyObject_FREE(g);
} else
#endif
{
PyObject_FREE(op);
if (op && PyType_IS_GC(op->ob_type)) {
op = (PyObject *) PyObject_AS_GC(op);
}
#endif
PyObject_FREE(op);
}
#ifndef WITH_CYCLE_GC

View file

@ -175,6 +175,7 @@ tupledealloc(op)
}
#endif
}
op = (PyTupleObject *) PyObject_AS_GC(op);
PyObject_DEL(op);
done:
Py_TRASHCAN_SAFE_END(op)
@ -559,6 +560,7 @@ _PyTuple_Resize(pv, newsize, last_is_sticky)
*pv = (PyObject *) sv;
if (sv == NULL) {
PyObject_GC_Init((PyObject *)v);
v = (PyTupleObject *) PyObject_AS_GC(v);
PyObject_DEL(v);
PyErr_NoMemory();
return -1;
@ -595,6 +597,7 @@ PyTuple_Fini()
while (p) {
q = p;
p = (PyTupleObject *)(p->ob_item[0]);
q = (PyTupleObject *) PyObject_AS_GC(q);
PyObject_DEL(q);
}
}