object.c revision adef1ba5345dc6cd48ddf9cfa35ac273c5939fb4
1
2/* Generic object operations; and implementation of None (NoObject) */
3
4#include "Python.h"
5#include "sliceobject.h" /* For PyEllipsis_Type */
6#include "frameobject.h"
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12#ifdef Py_REF_DEBUG
13Py_ssize_t _Py_RefTotal;
14
15Py_ssize_t
16_Py_GetRefTotal(void)
17{
18	PyObject *o;
19	Py_ssize_t total = _Py_RefTotal;
20        /* ignore the references to the dummy object of the dicts and sets
21           because they are not reliable and not useful (now that the
22           hash table code is well-tested) */
23	o = _PyDict_Dummy();
24	if (o != NULL)
25		total -= o->ob_refcnt;
26	o = _PySet_Dummy();
27	if (o != NULL)
28		total -= o->ob_refcnt;
29	return total;
30}
31#endif /* Py_REF_DEBUG */
32
33int Py_DivisionWarningFlag;
34
35/* Object allocation routines used by NEWOBJ and NEWVAROBJ macros.
36   These are used by the individual routines for object creation.
37   Do not call them otherwise, they do not initialize the object! */
38
39#ifdef Py_TRACE_REFS
40/* Head of circular doubly-linked list of all objects.  These are linked
41 * together via the _ob_prev and _ob_next members of a PyObject, which
42 * exist only in a Py_TRACE_REFS build.
43 */
44static PyObject refchain = {&refchain, &refchain};
45
46/* Insert op at the front of the list of all objects.  If force is true,
47 * op is added even if _ob_prev and _ob_next are non-NULL already.  If
48 * force is false amd _ob_prev or _ob_next are non-NULL, do nothing.
49 * force should be true if and only if op points to freshly allocated,
50 * uninitialized memory, or you've unlinked op from the list and are
51 * relinking it into the front.
52 * Note that objects are normally added to the list via _Py_NewReference,
53 * which is called by PyObject_Init.  Not all objects are initialized that
54 * way, though; exceptions include statically allocated type objects, and
55 * statically allocated singletons (like Py_True and Py_None).
56 */
57void
58_Py_AddToAllObjects(PyObject *op, int force)
59{
60#ifdef  Py_DEBUG
61	if (!force) {
62		/* If it's initialized memory, op must be in or out of
63		 * the list unambiguously.
64		 */
65		assert((op->_ob_prev == NULL) == (op->_ob_next == NULL));
66	}
67#endif
68	if (force || op->_ob_prev == NULL) {
69		op->_ob_next = refchain._ob_next;
70		op->_ob_prev = &refchain;
71		refchain._ob_next->_ob_prev = op;
72		refchain._ob_next = op;
73	}
74}
75#endif	/* Py_TRACE_REFS */
76
77#ifdef COUNT_ALLOCS
78static PyTypeObject *type_list;
79/* All types are added to type_list, at least when
80   they get one object created. That makes them
81   immortal, which unfortunately contributes to
82   garbage itself. If unlist_types_without_objects
83   is set, they will be removed from the type_list
84   once the last object is deallocated. */
85static int unlist_types_without_objects;
86extern Py_ssize_t tuple_zero_allocs, fast_tuple_allocs;
87extern Py_ssize_t quick_int_allocs, quick_neg_int_allocs;
88extern Py_ssize_t null_strings, one_strings;
89void
90dump_counts(FILE* f)
91{
92	PyTypeObject *tp;
93
94	for (tp = type_list; tp; tp = tp->tp_next)
95		fprintf(f, "%s alloc'd: %" PY_FORMAT_SIZE_T "d, "
96			"freed: %" PY_FORMAT_SIZE_T "d, "
97			"max in use: %" PY_FORMAT_SIZE_T "d\n",
98			tp->tp_name, tp->tp_allocs, tp->tp_frees,
99			tp->tp_maxalloc);
100	fprintf(f, "fast tuple allocs: %" PY_FORMAT_SIZE_T "d, "
101		"empty: %" PY_FORMAT_SIZE_T "d\n",
102		fast_tuple_allocs, tuple_zero_allocs);
103	fprintf(f, "fast int allocs: pos: %" PY_FORMAT_SIZE_T "d, "
104		"neg: %" PY_FORMAT_SIZE_T "d\n",
105		quick_int_allocs, quick_neg_int_allocs);
106	fprintf(f, "null strings: %" PY_FORMAT_SIZE_T "d, "
107		"1-strings: %" PY_FORMAT_SIZE_T "d\n",
108		null_strings, one_strings);
109}
110
111PyObject *
112get_counts(void)
113{
114	PyTypeObject *tp;
115	PyObject *result;
116	PyObject *v;
117
118	result = PyList_New(0);
119	if (result == NULL)
120		return NULL;
121	for (tp = type_list; tp; tp = tp->tp_next) {
122		v = Py_BuildValue("(snnn)", tp->tp_name, tp->tp_allocs,
123				  tp->tp_frees, tp->tp_maxalloc);
124		if (v == NULL) {
125			Py_DECREF(result);
126			return NULL;
127		}
128		if (PyList_Append(result, v) < 0) {
129			Py_DECREF(v);
130			Py_DECREF(result);
131			return NULL;
132		}
133		Py_DECREF(v);
134	}
135	return result;
136}
137
138void
139inc_count(PyTypeObject *tp)
140{
141	if (tp->tp_next == NULL && tp->tp_prev == NULL) {
142		/* first time; insert in linked list */
143		if (tp->tp_next != NULL) /* sanity check */
144			Py_FatalError("XXX inc_count sanity check");
145		if (type_list)
146			type_list->tp_prev = tp;
147		tp->tp_next = type_list;
148		/* Note that as of Python 2.2, heap-allocated type objects
149		 * can go away, but this code requires that they stay alive
150		 * until program exit.  That's why we're careful with
151		 * refcounts here.  type_list gets a new reference to tp,
152		 * while ownership of the reference type_list used to hold
153		 * (if any) was transferred to tp->tp_next in the line above.
154		 * tp is thus effectively immortal after this.
155		 */
156		Py_INCREF(tp);
157		type_list = tp;
158#ifdef Py_TRACE_REFS
159		/* Also insert in the doubly-linked list of all objects,
160		 * if not already there.
161		 */
162		_Py_AddToAllObjects((PyObject *)tp, 0);
163#endif
164	}
165	tp->tp_allocs++;
166	if (tp->tp_allocs - tp->tp_frees > tp->tp_maxalloc)
167		tp->tp_maxalloc = tp->tp_allocs - tp->tp_frees;
168}
169
170void dec_count(PyTypeObject *tp)
171{
172	tp->tp_frees++;
173	if (unlist_types_without_objects &&
174	    tp->tp_allocs == tp->tp_frees) {
175		/* unlink the type from type_list */
176		if (tp->tp_prev)
177			tp->tp_prev->tp_next = tp->tp_next;
178		else
179			type_list = tp->tp_next;
180		if (tp->tp_next)
181			tp->tp_next->tp_prev = tp->tp_prev;
182		tp->tp_next = tp->tp_prev = NULL;
183		Py_DECREF(tp);
184	}
185}
186
187#endif
188
189#ifdef Py_REF_DEBUG
190/* Log a fatal error; doesn't return. */
191void
192_Py_NegativeRefcount(const char *fname, int lineno, PyObject *op)
193{
194	char buf[300];
195
196	PyOS_snprintf(buf, sizeof(buf),
197		      "%s:%i object at %p has negative ref count "
198		      "%" PY_FORMAT_SIZE_T "d",
199		      fname, lineno, op, op->ob_refcnt);
200	Py_FatalError(buf);
201}
202
203#endif /* Py_REF_DEBUG */
204
205void
206Py_IncRef(PyObject *o)
207{
208    Py_XINCREF(o);
209}
210
211void
212Py_DecRef(PyObject *o)
213{
214    Py_XDECREF(o);
215}
216
217PyObject *
218PyObject_Init(PyObject *op, PyTypeObject *tp)
219{
220	if (op == NULL)
221		return PyErr_NoMemory();
222	/* Any changes should be reflected in PyObject_INIT (objimpl.h) */
223	Py_TYPE(op) = tp;
224	_Py_NewReference(op);
225	return op;
226}
227
228PyVarObject *
229PyObject_InitVar(PyVarObject *op, PyTypeObject *tp, Py_ssize_t size)
230{
231	if (op == NULL)
232		return (PyVarObject *) PyErr_NoMemory();
233	/* Any changes should be reflected in PyObject_INIT_VAR */
234	op->ob_size = size;
235	Py_TYPE(op) = tp;
236	_Py_NewReference((PyObject *)op);
237	return op;
238}
239
240PyObject *
241_PyObject_New(PyTypeObject *tp)
242{
243	PyObject *op;
244	op = (PyObject *) PyObject_MALLOC(_PyObject_SIZE(tp));
245	if (op == NULL)
246		return PyErr_NoMemory();
247	return PyObject_INIT(op, tp);
248}
249
250PyVarObject *
251_PyObject_NewVar(PyTypeObject *tp, Py_ssize_t nitems)
252{
253	PyVarObject *op;
254	const size_t size = _PyObject_VAR_SIZE(tp, nitems);
255	op = (PyVarObject *) PyObject_MALLOC(size);
256	if (op == NULL)
257		return (PyVarObject *)PyErr_NoMemory();
258	return PyObject_INIT_VAR(op, tp, nitems);
259}
260
261/* Implementation of PyObject_Print with recursion checking */
262static int
263internal_print(PyObject *op, FILE *fp, int flags, int nesting)
264{
265	int ret = 0;
266	if (nesting > 10) {
267		PyErr_SetString(PyExc_RuntimeError, "print recursion");
268		return -1;
269	}
270	if (PyErr_CheckSignals())
271		return -1;
272#ifdef USE_STACKCHECK
273	if (PyOS_CheckStack()) {
274		PyErr_SetString(PyExc_MemoryError, "stack overflow");
275		return -1;
276	}
277#endif
278	clearerr(fp); /* Clear any previous error condition */
279	if (op == NULL) {
280		Py_BEGIN_ALLOW_THREADS
281		fprintf(fp, "<nil>");
282		Py_END_ALLOW_THREADS
283	}
284	else {
285		if (op->ob_refcnt <= 0)
286			/* XXX(twouters) cast refcount to long until %zd is
287			   universally available */
288			Py_BEGIN_ALLOW_THREADS
289			fprintf(fp, "<refcnt %ld at %p>",
290				(long)op->ob_refcnt, op);
291			Py_END_ALLOW_THREADS
292		else {
293			PyObject *s;
294			if (flags & Py_PRINT_RAW)
295				s = PyObject_Str(op);
296			else
297				s = PyObject_Repr(op);
298			if (s == NULL)
299				ret = -1;
300                        else if (PyBytes_Check(s)) {
301				fwrite(PyBytes_AS_STRING(s), 1,
302				       PyBytes_GET_SIZE(s), fp);
303			}
304			else if (PyUnicode_Check(s)) {
305				PyObject *t;
306				t = _PyUnicode_AsDefaultEncodedString(s, NULL);
307				if (t == NULL)
308					ret = 0;
309				else {
310					fwrite(PyBytes_AS_STRING(t), 1,
311					       PyBytes_GET_SIZE(t), fp);
312				}
313			}
314			else {
315				PyErr_Format(PyExc_TypeError,
316					     "str() or repr() returned '%.100s'",
317					     s->ob_type->tp_name);
318				ret = -1;
319			}
320			Py_XDECREF(s);
321		}
322	}
323	if (ret == 0) {
324		if (ferror(fp)) {
325			PyErr_SetFromErrno(PyExc_IOError);
326			clearerr(fp);
327			ret = -1;
328		}
329	}
330	return ret;
331}
332
333int
334PyObject_Print(PyObject *op, FILE *fp, int flags)
335{
336	return internal_print(op, fp, flags, 0);
337}
338
339/* For debugging convenience.  Set a breakpoint here and call it from your DLL */
340void
341_Py_BreakPoint(void)
342{
343}
344
345
346/* For debugging convenience.  See Misc/gdbinit for some useful gdb hooks */
347void
348_PyObject_Dump(PyObject* op)
349{
350	if (op == NULL)
351		fprintf(stderr, "NULL\n");
352	else {
353#ifdef WITH_THREAD
354		PyGILState_STATE gil;
355#endif
356		fprintf(stderr, "object  : ");
357#ifdef WITH_THREAD
358		gil = PyGILState_Ensure();
359#endif
360		(void)PyObject_Print(op, stderr, 0);
361#ifdef WITH_THREAD
362		PyGILState_Release(gil);
363#endif
364		/* XXX(twouters) cast refcount to long until %zd is
365		   universally available */
366		fprintf(stderr, "\n"
367			"type    : %s\n"
368			"refcount: %ld\n"
369			"address : %p\n",
370			Py_TYPE(op)==NULL ? "NULL" : Py_TYPE(op)->tp_name,
371			(long)op->ob_refcnt,
372			op);
373	}
374}
375
376PyObject *
377PyObject_Repr(PyObject *v)
378{
379	PyObject *res;
380	if (PyErr_CheckSignals())
381		return NULL;
382#ifdef USE_STACKCHECK
383	if (PyOS_CheckStack()) {
384		PyErr_SetString(PyExc_MemoryError, "stack overflow");
385		return NULL;
386	}
387#endif
388	if (v == NULL)
389		return PyUnicode_FromString("<NULL>");
390	if (Py_TYPE(v)->tp_repr == NULL)
391		return PyUnicode_FromFormat("<%s object at %p>",
392                                            v->ob_type->tp_name, v);
393        res = (*v->ob_type->tp_repr)(v);
394        if (res != NULL && !PyUnicode_Check(res)) {
395		PyErr_Format(PyExc_TypeError,
396			     "__repr__ returned non-string (type %.200s)",
397			     res->ob_type->tp_name);
398		Py_DECREF(res);
399		return NULL;
400        }
401        return res;
402}
403
404PyObject *
405PyObject_Str(PyObject *v)
406{
407	PyObject *res;
408	if (PyErr_CheckSignals())
409		return NULL;
410#ifdef USE_STACKCHECK
411	if (PyOS_CheckStack()) {
412		PyErr_SetString(PyExc_MemoryError, "stack overflow");
413		return NULL;
414	}
415#endif
416	if (v == NULL)
417		return PyUnicode_FromString("<NULL>");
418	if (PyUnicode_CheckExact(v)) {
419		Py_INCREF(v);
420		return v;
421	}
422	if (Py_TYPE(v)->tp_str == NULL)
423		return PyObject_Repr(v);
424
425	/* It is possible for a type to have a tp_str representation that loops
426	   infinitely. */
427	if (Py_EnterRecursiveCall(" while getting the str of an object"))
428		return NULL;
429	res = (*Py_TYPE(v)->tp_str)(v);
430	Py_LeaveRecursiveCall();
431	if (res == NULL)
432		return NULL;
433	if (!PyUnicode_Check(res)) {
434		PyErr_Format(PyExc_TypeError,
435			     "__str__ returned non-string (type %.200s)",
436			     Py_TYPE(res)->tp_name);
437		Py_DECREF(res);
438		return NULL;
439	}
440	return res;
441}
442
443PyObject *
444PyObject_ASCII(PyObject *v)
445{
446	PyObject *repr, *ascii, *res;
447
448	repr = PyObject_Repr(v);
449	if (repr == NULL)
450		return NULL;
451
452	/* repr is guaranteed to be a PyUnicode object by PyObject_Repr */
453	ascii = PyUnicode_EncodeASCII(
454		PyUnicode_AS_UNICODE(repr),
455		PyUnicode_GET_SIZE(repr),
456		"backslashreplace");
457
458	Py_DECREF(repr);
459	if (ascii == NULL)
460		return NULL;
461
462	res = PyUnicode_DecodeASCII(
463		PyBytes_AS_STRING(ascii),
464		PyBytes_GET_SIZE(ascii),
465		NULL);
466
467	Py_DECREF(ascii);
468	return res;
469}
470
471PyObject *
472PyObject_Bytes(PyObject *v)
473{
474	PyObject *result, *func;
475	static PyObject *bytesstring = NULL;
476
477	if (v == NULL)
478		return PyBytes_FromString("<NULL>");
479
480	if (PyBytes_CheckExact(v)) {
481		Py_INCREF(v);
482		return v;
483	}
484
485	func = _PyObject_LookupSpecial(v, "__bytes__", &bytesstring);
486	if (func != NULL) {
487            result = PyObject_CallFunctionObjArgs(func, NULL);
488	    Py_DECREF(func);
489            if (result == NULL)
490		return NULL;
491            if (!PyBytes_Check(result)) {
492		PyErr_Format(PyExc_TypeError,
493			     "__bytes__ returned non-bytes (type %.200s)",
494			     Py_TYPE(result)->tp_name);
495		Py_DECREF(result);
496		return NULL;
497            }
498            return result;
499	}
500	else if (PyErr_Occurred())
501		return NULL;
502	return PyBytes_FromObject(v);
503}
504
505/* For Python 3.0.1 and later, the old three-way comparison has been
506   completely removed in favour of rich comparisons.  PyObject_Compare() and
507   PyObject_Cmp() are gone, and the builtin cmp function no longer exists.
508   The old tp_compare slot has been renamed to tp_reserved, and should no
509   longer be used.  Use tp_richcompare instead.
510
511   See (*) below for practical amendments.
512
513   tp_richcompare gets called with a first argument of the appropriate type
514   and a second object of an arbitrary type.  We never do any kind of
515   coercion.
516
517   The tp_richcompare slot should return an object, as follows:
518
519    NULL if an exception occurred
520    NotImplemented if the requested comparison is not implemented
521    any other false value if the requested comparison is false
522    any other true value if the requested comparison is true
523
524  The PyObject_RichCompare[Bool]() wrappers raise TypeError when they get
525  NotImplemented.
526
527  (*) Practical amendments:
528
529  - If rich comparison returns NotImplemented, == and != are decided by
530    comparing the object pointer (i.e. falling back to the base object
531    implementation).
532
533*/
534
535/* Map rich comparison operators to their swapped version, e.g. LT <--> GT */
536int _Py_SwappedOp[] = {Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE};
537
538static char *opstrings[] = {"<", "<=", "==", "!=", ">", ">="};
539
540/* Perform a rich comparison, raising TypeError when the requested comparison
541   operator is not supported. */
542static PyObject *
543do_richcompare(PyObject *v, PyObject *w, int op)
544{
545	richcmpfunc f;
546	PyObject *res;
547
548	if (v->ob_type != w->ob_type &&
549	    PyType_IsSubtype(w->ob_type, v->ob_type) &&
550	    (f = w->ob_type->tp_richcompare) != NULL) {
551		res = (*f)(w, v, _Py_SwappedOp[op]);
552		if (res != Py_NotImplemented)
553			return res;
554		Py_DECREF(res);
555	}
556	if ((f = v->ob_type->tp_richcompare) != NULL) {
557		res = (*f)(v, w, op);
558		if (res != Py_NotImplemented)
559			return res;
560		Py_DECREF(res);
561	}
562	if ((f = w->ob_type->tp_richcompare) != NULL) {
563		res = (*f)(w, v, _Py_SwappedOp[op]);
564		if (res != Py_NotImplemented)
565			return res;
566		Py_DECREF(res);
567	}
568	/* If neither object implements it, provide a sensible default
569	   for == and !=, but raise an exception for ordering. */
570	switch (op) {
571	case Py_EQ:
572		res = (v == w) ? Py_True : Py_False;
573		break;
574	case Py_NE:
575		res = (v != w) ? Py_True : Py_False;
576		break;
577	default:
578		/* XXX Special-case None so it doesn't show as NoneType() */
579		PyErr_Format(PyExc_TypeError,
580			     "unorderable types: %.100s() %s %.100s()",
581			     v->ob_type->tp_name,
582			     opstrings[op],
583			     w->ob_type->tp_name);
584		return NULL;
585	}
586	Py_INCREF(res);
587	return res;
588}
589
590/* Perform a rich comparison with object result.  This wraps do_richcompare()
591   with a check for NULL arguments and a recursion check. */
592
593PyObject *
594PyObject_RichCompare(PyObject *v, PyObject *w, int op)
595{
596	PyObject *res;
597
598	assert(Py_LT <= op && op <= Py_GE);
599	if (v == NULL || w == NULL) {
600		if (!PyErr_Occurred())
601			PyErr_BadInternalCall();
602		return NULL;
603	}
604	if (Py_EnterRecursiveCall(" in comparison"))
605		return NULL;
606	res = do_richcompare(v, w, op);
607	Py_LeaveRecursiveCall();
608	return res;
609}
610
611/* Perform a rich comparison with integer result.  This wraps
612   PyObject_RichCompare(), returning -1 for error, 0 for false, 1 for true. */
613int
614PyObject_RichCompareBool(PyObject *v, PyObject *w, int op)
615{
616	PyObject *res;
617	int ok;
618
619	/* Quick result when objects are the same.
620	   Guarantees that identity implies equality. */
621	if (v == w) {
622		if (op == Py_EQ)
623			return 1;
624		else if (op == Py_NE)
625			return 0;
626	}
627
628	res = PyObject_RichCompare(v, w, op);
629	if (res == NULL)
630		return -1;
631	if (PyBool_Check(res))
632		ok = (res == Py_True);
633	else
634		ok = PyObject_IsTrue(res);
635	Py_DECREF(res);
636	return ok;
637}
638
639/* Set of hash utility functions to help maintaining the invariant that
640	if a==b then hash(a)==hash(b)
641
642   All the utility functions (_Py_Hash*()) return "-1" to signify an error.
643*/
644
645long
646_Py_HashDouble(double v)
647{
648	double intpart, fractpart;
649	int expo;
650	long hipart;
651	long x;		/* the final hash value */
652	/* This is designed so that Python numbers of different types
653	 * that compare equal hash to the same value; otherwise comparisons
654	 * of mapping keys will turn out weird.
655	 */
656
657	fractpart = modf(v, &intpart);
658	if (fractpart == 0.0) {
659		/* This must return the same hash as an equal int or long. */
660		if (intpart > LONG_MAX/2 || -intpart > LONG_MAX/2) {
661			/* Convert to long and use its hash. */
662			PyObject *plong;	/* converted to Python long */
663			if (Py_IS_INFINITY(intpart))
664				/* can't convert to long int -- arbitrary */
665				v = v < 0 ? -271828.0 : 314159.0;
666			plong = PyLong_FromDouble(v);
667			if (plong == NULL)
668				return -1;
669			x = PyObject_Hash(plong);
670			Py_DECREF(plong);
671			return x;
672		}
673		/* Fits in a C long == a Python int, so is its own hash. */
674		x = (long)intpart;
675		if (x == -1)
676			x = -2;
677		return x;
678	}
679	/* The fractional part is non-zero, so we don't have to worry about
680	 * making this match the hash of some other type.
681	 * Use frexp to get at the bits in the double.
682	 * Since the VAX D double format has 56 mantissa bits, which is the
683	 * most of any double format in use, each of these parts may have as
684	 * many as (but no more than) 56 significant bits.
685	 * So, assuming sizeof(long) >= 4, each part can be broken into two
686	 * longs; frexp and multiplication are used to do that.
687	 * Also, since the Cray double format has 15 exponent bits, which is
688	 * the most of any double format in use, shifting the exponent field
689	 * left by 15 won't overflow a long (again assuming sizeof(long) >= 4).
690	 */
691	v = frexp(v, &expo);
692	v *= 2147483648.0;	/* 2**31 */
693	hipart = (long)v;	/* take the top 32 bits */
694	v = (v - (double)hipart) * 2147483648.0; /* get the next 32 bits */
695	x = hipart + (long)v + (expo << 15);
696	if (x == -1)
697		x = -2;
698	return x;
699}
700
701long
702_Py_HashPointer(void *p)
703{
704	long x;
705	size_t y = (size_t)p;
706	/* bottom 3 or 4 bits are likely to be 0; rotate y by 4 to avoid
707	   excessive hash collisions for dicts and sets */
708	y = (y >> 4) | (y << (8 * SIZEOF_VOID_P - 4));
709	x = (long)y;
710	if (x == -1)
711		x = -2;
712	return x;
713}
714
715long
716PyObject_HashNotImplemented(PyObject *v)
717{
718	PyErr_Format(PyExc_TypeError, "unhashable type: '%.200s'",
719		     Py_TYPE(v)->tp_name);
720	return -1;
721}
722
723long
724PyObject_Hash(PyObject *v)
725{
726	PyTypeObject *tp = Py_TYPE(v);
727	if (tp->tp_hash != NULL)
728		return (*tp->tp_hash)(v);
729	/* To keep to the general practice that inheriting
730	 * solely from object in C code should work without
731	 * an explicit call to PyType_Ready, we implicitly call
732	 * PyType_Ready here and then check the tp_hash slot again
733	 */
734	if (tp->tp_dict == NULL) {
735		if (PyType_Ready(tp) < 0)
736			return -1;
737		if (tp->tp_hash != NULL)
738			return (*tp->tp_hash)(v);
739	}
740	/* Otherwise, the object can't be hashed */
741	return PyObject_HashNotImplemented(v);
742}
743
744PyObject *
745PyObject_GetAttrString(PyObject *v, const char *name)
746{
747	PyObject *w, *res;
748
749	if (Py_TYPE(v)->tp_getattr != NULL)
750		return (*Py_TYPE(v)->tp_getattr)(v, (char*)name);
751	w = PyUnicode_InternFromString(name);
752	if (w == NULL)
753		return NULL;
754	res = PyObject_GetAttr(v, w);
755	Py_XDECREF(w);
756	return res;
757}
758
759int
760PyObject_HasAttrString(PyObject *v, const char *name)
761{
762	PyObject *res = PyObject_GetAttrString(v, name);
763	if (res != NULL) {
764		Py_DECREF(res);
765		return 1;
766	}
767	PyErr_Clear();
768	return 0;
769}
770
771int
772PyObject_SetAttrString(PyObject *v, const char *name, PyObject *w)
773{
774	PyObject *s;
775	int res;
776
777	if (Py_TYPE(v)->tp_setattr != NULL)
778		return (*Py_TYPE(v)->tp_setattr)(v, (char*)name, w);
779	s = PyUnicode_InternFromString(name);
780	if (s == NULL)
781		return -1;
782	res = PyObject_SetAttr(v, s, w);
783	Py_XDECREF(s);
784	return res;
785}
786
787PyObject *
788PyObject_GetAttr(PyObject *v, PyObject *name)
789{
790	PyTypeObject *tp = Py_TYPE(v);
791
792 	if (!PyUnicode_Check(name)) {
793		PyErr_Format(PyExc_TypeError,
794			     "attribute name must be string, not '%.200s'",
795			     name->ob_type->tp_name);
796		return NULL;
797	}
798	if (tp->tp_getattro != NULL)
799		return (*tp->tp_getattro)(v, name);
800	if (tp->tp_getattr != NULL)
801		return (*tp->tp_getattr)(v, _PyUnicode_AsString(name));
802	PyErr_Format(PyExc_AttributeError,
803		     "'%.50s' object has no attribute '%U'",
804		     tp->tp_name, name);
805	return NULL;
806}
807
808int
809PyObject_HasAttr(PyObject *v, PyObject *name)
810{
811	PyObject *res = PyObject_GetAttr(v, name);
812	if (res != NULL) {
813		Py_DECREF(res);
814		return 1;
815	}
816	PyErr_Clear();
817	return 0;
818}
819
820int
821PyObject_SetAttr(PyObject *v, PyObject *name, PyObject *value)
822{
823	PyTypeObject *tp = Py_TYPE(v);
824	int err;
825
826	if (!PyUnicode_Check(name)) {
827		PyErr_Format(PyExc_TypeError,
828			     "attribute name must be string, not '%.200s'",
829			     name->ob_type->tp_name);
830		return -1;
831	}
832	Py_INCREF(name);
833
834	PyUnicode_InternInPlace(&name);
835	if (tp->tp_setattro != NULL) {
836		err = (*tp->tp_setattro)(v, name, value);
837		Py_DECREF(name);
838		return err;
839	}
840	if (tp->tp_setattr != NULL) {
841		err = (*tp->tp_setattr)(v, _PyUnicode_AsString(name), value);
842		Py_DECREF(name);
843		return err;
844	}
845	Py_DECREF(name);
846	assert(name->ob_refcnt >= 1);
847	if (tp->tp_getattr == NULL && tp->tp_getattro == NULL)
848		PyErr_Format(PyExc_TypeError,
849			     "'%.100s' object has no attributes "
850			     "(%s .%U)",
851			     tp->tp_name,
852			     value==NULL ? "del" : "assign to",
853			     name);
854	else
855		PyErr_Format(PyExc_TypeError,
856			     "'%.100s' object has only read-only attributes "
857			     "(%s .%U)",
858			     tp->tp_name,
859			     value==NULL ? "del" : "assign to",
860			     name);
861	return -1;
862}
863
864/* Helper to get a pointer to an object's __dict__ slot, if any */
865
866PyObject **
867_PyObject_GetDictPtr(PyObject *obj)
868{
869	Py_ssize_t dictoffset;
870	PyTypeObject *tp = Py_TYPE(obj);
871
872	dictoffset = tp->tp_dictoffset;
873	if (dictoffset == 0)
874		return NULL;
875	if (dictoffset < 0) {
876		Py_ssize_t tsize;
877		size_t size;
878
879		tsize = ((PyVarObject *)obj)->ob_size;
880		if (tsize < 0)
881			tsize = -tsize;
882		size = _PyObject_VAR_SIZE(tp, tsize);
883
884		dictoffset += (long)size;
885		assert(dictoffset > 0);
886		assert(dictoffset % SIZEOF_VOID_P == 0);
887	}
888	return (PyObject **) ((char *)obj + dictoffset);
889}
890
891PyObject *
892PyObject_SelfIter(PyObject *obj)
893{
894	Py_INCREF(obj);
895	return obj;
896}
897
898/* Helper used when the __next__ method is removed from a type:
899   tp_iternext is never NULL and can be safely called without checking
900   on every iteration.
901 */
902
903PyObject *
904_PyObject_NextNotImplemented(PyObject *self)
905{
906	PyErr_Format(PyExc_TypeError,
907		     "'%.200s' object is not iterable",
908		     Py_TYPE(self)->tp_name);
909	return NULL;
910}
911
912/* Generic GetAttr functions - put these in your tp_[gs]etattro slot */
913
914PyObject *
915PyObject_GenericGetAttr(PyObject *obj, PyObject *name)
916{
917	PyTypeObject *tp = Py_TYPE(obj);
918	PyObject *descr = NULL;
919	PyObject *res = NULL;
920	descrgetfunc f;
921	Py_ssize_t dictoffset;
922	PyObject **dictptr;
923
924	if (!PyUnicode_Check(name)){
925		PyErr_Format(PyExc_TypeError,
926			     "attribute name must be string, not '%.200s'",
927			     name->ob_type->tp_name);
928		return NULL;
929	}
930	else
931		Py_INCREF(name);
932
933	if (tp->tp_dict == NULL) {
934		if (PyType_Ready(tp) < 0)
935			goto done;
936	}
937
938#if 0 /* XXX this is not quite _PyType_Lookup anymore */
939	/* Inline _PyType_Lookup */
940	{
941		Py_ssize_t i, n;
942		PyObject *mro, *base, *dict;
943
944		/* Look in tp_dict of types in MRO */
945		mro = tp->tp_mro;
946		assert(mro != NULL);
947		assert(PyTuple_Check(mro));
948		n = PyTuple_GET_SIZE(mro);
949		for (i = 0; i < n; i++) {
950			base = PyTuple_GET_ITEM(mro, i);
951			assert(PyType_Check(base));
952			dict = ((PyTypeObject *)base)->tp_dict;
953			assert(dict && PyDict_Check(dict));
954			descr = PyDict_GetItem(dict, name);
955			if (descr != NULL)
956				break;
957		}
958	}
959#else
960	descr = _PyType_Lookup(tp, name);
961#endif
962
963	Py_XINCREF(descr);
964
965	f = NULL;
966	if (descr != NULL) {
967		f = descr->ob_type->tp_descr_get;
968		if (f != NULL && PyDescr_IsData(descr)) {
969			res = f(descr, obj, (PyObject *)obj->ob_type);
970			Py_DECREF(descr);
971			goto done;
972		}
973	}
974
975	/* Inline _PyObject_GetDictPtr */
976	dictoffset = tp->tp_dictoffset;
977	if (dictoffset != 0) {
978		PyObject *dict;
979		if (dictoffset < 0) {
980			Py_ssize_t tsize;
981			size_t size;
982
983			tsize = ((PyVarObject *)obj)->ob_size;
984			if (tsize < 0)
985				tsize = -tsize;
986			size = _PyObject_VAR_SIZE(tp, tsize);
987
988			dictoffset += (long)size;
989			assert(dictoffset > 0);
990			assert(dictoffset % SIZEOF_VOID_P == 0);
991		}
992		dictptr = (PyObject **) ((char *)obj + dictoffset);
993		dict = *dictptr;
994		if (dict != NULL) {
995			Py_INCREF(dict);
996			res = PyDict_GetItem(dict, name);
997			if (res != NULL) {
998				Py_INCREF(res);
999				Py_XDECREF(descr);
1000                                Py_DECREF(dict);
1001				goto done;
1002			}
1003                        Py_DECREF(dict);
1004		}
1005	}
1006
1007	if (f != NULL) {
1008		res = f(descr, obj, (PyObject *)Py_TYPE(obj));
1009		Py_DECREF(descr);
1010		goto done;
1011	}
1012
1013	if (descr != NULL) {
1014		res = descr;
1015		/* descr was already increfed above */
1016		goto done;
1017	}
1018
1019	PyErr_Format(PyExc_AttributeError,
1020		     "'%.50s' object has no attribute '%.400s'",
1021		     tp->tp_name, _PyUnicode_AsString(name));
1022  done:
1023	Py_DECREF(name);
1024	return res;
1025}
1026
1027int
1028PyObject_GenericSetAttr(PyObject *obj, PyObject *name, PyObject *value)
1029{
1030	PyTypeObject *tp = Py_TYPE(obj);
1031	PyObject *descr;
1032	descrsetfunc f;
1033	PyObject **dictptr;
1034	int res = -1;
1035
1036	if (!PyUnicode_Check(name)){
1037		PyErr_Format(PyExc_TypeError,
1038			     "attribute name must be string, not '%.200s'",
1039			     name->ob_type->tp_name);
1040		return -1;
1041	}
1042	else
1043		Py_INCREF(name);
1044
1045	if (tp->tp_dict == NULL) {
1046		if (PyType_Ready(tp) < 0)
1047			goto done;
1048	}
1049
1050	descr = _PyType_Lookup(tp, name);
1051	f = NULL;
1052	if (descr != NULL) {
1053		f = descr->ob_type->tp_descr_set;
1054		if (f != NULL && PyDescr_IsData(descr)) {
1055			res = f(descr, obj, value);
1056			goto done;
1057		}
1058	}
1059
1060	dictptr = _PyObject_GetDictPtr(obj);
1061	if (dictptr != NULL) {
1062		PyObject *dict = *dictptr;
1063		if (dict == NULL && value != NULL) {
1064			dict = PyDict_New();
1065			if (dict == NULL)
1066				goto done;
1067			*dictptr = dict;
1068		}
1069		if (dict != NULL) {
1070			Py_INCREF(dict);
1071			if (value == NULL)
1072				res = PyDict_DelItem(dict, name);
1073			else
1074				res = PyDict_SetItem(dict, name, value);
1075			if (res < 0 && PyErr_ExceptionMatches(PyExc_KeyError))
1076				PyErr_SetObject(PyExc_AttributeError, name);
1077			Py_DECREF(dict);
1078			goto done;
1079		}
1080	}
1081
1082	if (f != NULL) {
1083		res = f(descr, obj, value);
1084		goto done;
1085	}
1086
1087	if (descr == NULL) {
1088		PyErr_Format(PyExc_AttributeError,
1089			     "'%.100s' object has no attribute '%U'",
1090			     tp->tp_name, name);
1091		goto done;
1092	}
1093
1094	PyErr_Format(PyExc_AttributeError,
1095		     "'%.50s' object attribute '%U' is read-only",
1096		     tp->tp_name, name);
1097  done:
1098	Py_DECREF(name);
1099	return res;
1100}
1101
1102/* Test a value used as condition, e.g., in a for or if statement.
1103   Return -1 if an error occurred */
1104
1105int
1106PyObject_IsTrue(PyObject *v)
1107{
1108	Py_ssize_t res;
1109	if (v == Py_True)
1110		return 1;
1111	if (v == Py_False)
1112		return 0;
1113	if (v == Py_None)
1114		return 0;
1115	else if (v->ob_type->tp_as_number != NULL &&
1116		 v->ob_type->tp_as_number->nb_bool != NULL)
1117		res = (*v->ob_type->tp_as_number->nb_bool)(v);
1118	else if (v->ob_type->tp_as_mapping != NULL &&
1119		 v->ob_type->tp_as_mapping->mp_length != NULL)
1120		res = (*v->ob_type->tp_as_mapping->mp_length)(v);
1121	else if (v->ob_type->tp_as_sequence != NULL &&
1122		 v->ob_type->tp_as_sequence->sq_length != NULL)
1123		res = (*v->ob_type->tp_as_sequence->sq_length)(v);
1124	else
1125		return 1;
1126	/* if it is negative, it should be either -1 or -2 */
1127	return (res > 0) ? 1 : Py_SAFE_DOWNCAST(res, Py_ssize_t, int);
1128}
1129
1130/* equivalent of 'not v'
1131   Return -1 if an error occurred */
1132
1133int
1134PyObject_Not(PyObject *v)
1135{
1136	int res;
1137	res = PyObject_IsTrue(v);
1138	if (res < 0)
1139		return res;
1140	return res == 0;
1141}
1142
1143/* Test whether an object can be called */
1144
1145int
1146PyCallable_Check(PyObject *x)
1147{
1148	if (x == NULL)
1149		return 0;
1150	return x->ob_type->tp_call != NULL;
1151}
1152
1153/* ------------------------- PyObject_Dir() helpers ------------------------- */
1154
1155/* Helper for PyObject_Dir.
1156   Merge the __dict__ of aclass into dict, and recursively also all
1157   the __dict__s of aclass's base classes.  The order of merging isn't
1158   defined, as it's expected that only the final set of dict keys is
1159   interesting.
1160   Return 0 on success, -1 on error.
1161*/
1162
1163static int
1164merge_class_dict(PyObject* dict, PyObject* aclass)
1165{
1166	PyObject *classdict;
1167	PyObject *bases;
1168
1169	assert(PyDict_Check(dict));
1170	assert(aclass);
1171
1172	/* Merge in the type's dict (if any). */
1173	classdict = PyObject_GetAttrString(aclass, "__dict__");
1174	if (classdict == NULL)
1175		PyErr_Clear();
1176	else {
1177		int status = PyDict_Update(dict, classdict);
1178		Py_DECREF(classdict);
1179		if (status < 0)
1180			return -1;
1181	}
1182
1183	/* Recursively merge in the base types' (if any) dicts. */
1184	bases = PyObject_GetAttrString(aclass, "__bases__");
1185	if (bases == NULL)
1186		PyErr_Clear();
1187	else {
1188		/* We have no guarantee that bases is a real tuple */
1189		Py_ssize_t i, n;
1190		n = PySequence_Size(bases); /* This better be right */
1191		if (n < 0)
1192			PyErr_Clear();
1193		else {
1194			for (i = 0; i < n; i++) {
1195				int status;
1196				PyObject *base = PySequence_GetItem(bases, i);
1197				if (base == NULL) {
1198					Py_DECREF(bases);
1199					return -1;
1200				}
1201				status = merge_class_dict(dict, base);
1202				Py_DECREF(base);
1203				if (status < 0) {
1204					Py_DECREF(bases);
1205					return -1;
1206				}
1207			}
1208		}
1209		Py_DECREF(bases);
1210	}
1211	return 0;
1212}
1213
1214/* Helper for PyObject_Dir without arguments: returns the local scope. */
1215static PyObject *
1216_dir_locals(void)
1217{
1218	PyObject *names;
1219	PyObject *locals = PyEval_GetLocals();
1220
1221	if (locals == NULL) {
1222		PyErr_SetString(PyExc_SystemError, "frame does not exist");
1223		return NULL;
1224	}
1225
1226	names = PyMapping_Keys(locals);
1227	if (!names)
1228		return NULL;
1229	if (!PyList_Check(names)) {
1230		PyErr_Format(PyExc_TypeError,
1231			"dir(): expected keys() of locals to be a list, "
1232			"not '%.200s'", Py_TYPE(names)->tp_name);
1233		Py_DECREF(names);
1234		return NULL;
1235	}
1236	/* the locals don't need to be DECREF'd */
1237	return names;
1238}
1239
1240/* Helper for PyObject_Dir of type objects: returns __dict__ and __bases__.
1241   We deliberately don't suck up its __class__, as methods belonging to the
1242   metaclass would probably be more confusing than helpful.
1243*/
1244static PyObject *
1245_specialized_dir_type(PyObject *obj)
1246{
1247	PyObject *result = NULL;
1248	PyObject *dict = PyDict_New();
1249
1250	if (dict != NULL && merge_class_dict(dict, obj) == 0)
1251		result = PyDict_Keys(dict);
1252
1253	Py_XDECREF(dict);
1254	return result;
1255}
1256
1257/* Helper for PyObject_Dir of module objects: returns the module's __dict__. */
1258static PyObject *
1259_specialized_dir_module(PyObject *obj)
1260{
1261	PyObject *result = NULL;
1262	PyObject *dict = PyObject_GetAttrString(obj, "__dict__");
1263
1264	if (dict != NULL) {
1265		if (PyDict_Check(dict))
1266			result = PyDict_Keys(dict);
1267		else {
1268			const char *name = PyModule_GetName(obj);
1269			if (name)
1270				PyErr_Format(PyExc_TypeError,
1271					     "%.200s.__dict__ is not a dictionary",
1272					     name);
1273		}
1274	}
1275
1276	Py_XDECREF(dict);
1277	return result;
1278}
1279
1280/* Helper for PyObject_Dir of generic objects: returns __dict__, __class__,
1281   and recursively up the __class__.__bases__ chain.
1282*/
1283static PyObject *
1284_generic_dir(PyObject *obj)
1285{
1286	PyObject *result = NULL;
1287	PyObject *dict = NULL;
1288	PyObject *itsclass = NULL;
1289
1290	/* Get __dict__ (which may or may not be a real dict...) */
1291	dict = PyObject_GetAttrString(obj, "__dict__");
1292	if (dict == NULL) {
1293		PyErr_Clear();
1294		dict = PyDict_New();
1295	}
1296	else if (!PyDict_Check(dict)) {
1297		Py_DECREF(dict);
1298		dict = PyDict_New();
1299	}
1300	else {
1301		/* Copy __dict__ to avoid mutating it. */
1302		PyObject *temp = PyDict_Copy(dict);
1303		Py_DECREF(dict);
1304		dict = temp;
1305	}
1306
1307	if (dict == NULL)
1308		goto error;
1309
1310	/* Merge in attrs reachable from its class. */
1311	itsclass = PyObject_GetAttrString(obj, "__class__");
1312	if (itsclass == NULL)
1313		/* XXX(tomer): Perhaps fall back to obj->ob_type if no
1314		               __class__ exists? */
1315		PyErr_Clear();
1316	else {
1317		if (merge_class_dict(dict, itsclass) != 0)
1318			goto error;
1319	}
1320
1321	result = PyDict_Keys(dict);
1322	/* fall through */
1323error:
1324	Py_XDECREF(itsclass);
1325	Py_XDECREF(dict);
1326	return result;
1327}
1328
1329/* Helper for PyObject_Dir: object introspection.
1330   This calls one of the above specialized versions if no __dir__ method
1331   exists. */
1332static PyObject *
1333_dir_object(PyObject *obj)
1334{
1335	PyObject * result = NULL;
1336	PyObject * dirfunc = PyObject_GetAttrString((PyObject*)obj->ob_type,
1337						    "__dir__");
1338
1339	assert(obj);
1340	if (dirfunc == NULL) {
1341		/* use default implementation */
1342		PyErr_Clear();
1343		if (PyModule_Check(obj))
1344			result = _specialized_dir_module(obj);
1345		else if (PyType_Check(obj))
1346			result = _specialized_dir_type(obj);
1347		else
1348			result = _generic_dir(obj);
1349	}
1350	else {
1351		/* use __dir__ */
1352		result = PyObject_CallFunctionObjArgs(dirfunc, obj, NULL);
1353		Py_DECREF(dirfunc);
1354		if (result == NULL)
1355			return NULL;
1356
1357		/* result must be a list */
1358		/* XXX(gbrandl): could also check if all items are strings */
1359		if (!PyList_Check(result)) {
1360			PyErr_Format(PyExc_TypeError,
1361				     "__dir__() must return a list, not %.200s",
1362				     Py_TYPE(result)->tp_name);
1363			Py_DECREF(result);
1364			result = NULL;
1365		}
1366	}
1367
1368	return result;
1369}
1370
1371/* Implementation of dir() -- if obj is NULL, returns the names in the current
1372   (local) scope.  Otherwise, performs introspection of the object: returns a
1373   sorted list of attribute names (supposedly) accessible from the object
1374*/
1375PyObject *
1376PyObject_Dir(PyObject *obj)
1377{
1378	PyObject * result;
1379
1380	if (obj == NULL)
1381		/* no object -- introspect the locals */
1382		result = _dir_locals();
1383	else
1384		/* object -- introspect the object */
1385		result = _dir_object(obj);
1386
1387	assert(result == NULL || PyList_Check(result));
1388
1389	if (result != NULL && PyList_Sort(result) != 0) {
1390		/* sorting the list failed */
1391		Py_DECREF(result);
1392		result = NULL;
1393	}
1394
1395	return result;
1396}
1397
1398/*
1399NoObject is usable as a non-NULL undefined value, used by the macro None.
1400There is (and should be!) no way to create other objects of this type,
1401so there is exactly one (which is indestructible, by the way).
1402(XXX This type and the type of NotImplemented below should be unified.)
1403*/
1404
1405/* ARGSUSED */
1406static PyObject *
1407none_repr(PyObject *op)
1408{
1409	return PyUnicode_FromString("None");
1410}
1411
1412/* ARGUSED */
1413static void
1414none_dealloc(PyObject* ignore)
1415{
1416	/* This should never get called, but we also don't want to SEGV if
1417	 * we accidentally decref None out of existence.
1418	 */
1419	Py_FatalError("deallocating None");
1420}
1421
1422
1423static PyTypeObject PyNone_Type = {
1424	PyVarObject_HEAD_INIT(&PyType_Type, 0)
1425	"NoneType",
1426	0,
1427	0,
1428	none_dealloc,	/*tp_dealloc*/ /*never called*/
1429	0,		/*tp_print*/
1430	0,		/*tp_getattr*/
1431	0,		/*tp_setattr*/
1432	0,		/*tp_reserved*/
1433	none_repr,	/*tp_repr*/
1434	0,		/*tp_as_number*/
1435	0,		/*tp_as_sequence*/
1436	0,		/*tp_as_mapping*/
1437	0,		/*tp_hash */
1438};
1439
1440PyObject _Py_NoneStruct = {
1441  _PyObject_EXTRA_INIT
1442  1, &PyNone_Type
1443};
1444
1445/* NotImplemented is an object that can be used to signal that an
1446   operation is not implemented for the given type combination. */
1447
1448static PyObject *
1449NotImplemented_repr(PyObject *op)
1450{
1451	return PyUnicode_FromString("NotImplemented");
1452}
1453
1454static PyTypeObject PyNotImplemented_Type = {
1455	PyVarObject_HEAD_INIT(&PyType_Type, 0)
1456	"NotImplementedType",
1457	0,
1458	0,
1459	none_dealloc,	/*tp_dealloc*/ /*never called*/
1460	0,		/*tp_print*/
1461	0,		/*tp_getattr*/
1462	0,		/*tp_setattr*/
1463	0,		/*tp_reserved*/
1464	NotImplemented_repr, /*tp_repr*/
1465	0,		/*tp_as_number*/
1466	0,		/*tp_as_sequence*/
1467	0,		/*tp_as_mapping*/
1468	0,		/*tp_hash */
1469};
1470
1471PyObject _Py_NotImplementedStruct = {
1472	_PyObject_EXTRA_INIT
1473	1, &PyNotImplemented_Type
1474};
1475
1476void
1477_Py_ReadyTypes(void)
1478{
1479	if (PyType_Ready(&PyType_Type) < 0)
1480		Py_FatalError("Can't initialize type type");
1481
1482	if (PyType_Ready(&_PyWeakref_RefType) < 0)
1483		Py_FatalError("Can't initialize weakref type");
1484
1485	if (PyType_Ready(&_PyWeakref_CallableProxyType) < 0)
1486		Py_FatalError("Can't initialize callable weakref proxy type");
1487
1488	if (PyType_Ready(&_PyWeakref_ProxyType) < 0)
1489		Py_FatalError("Can't initialize weakref proxy type");
1490
1491	if (PyType_Ready(&PyBool_Type) < 0)
1492		Py_FatalError("Can't initialize bool type");
1493
1494	if (PyType_Ready(&PyByteArray_Type) < 0)
1495		Py_FatalError("Can't initialize bytearray type");
1496
1497	if (PyType_Ready(&PyBytes_Type) < 0)
1498		Py_FatalError("Can't initialize 'str'");
1499
1500	if (PyType_Ready(&PyList_Type) < 0)
1501		Py_FatalError("Can't initialize list type");
1502
1503	if (PyType_Ready(&PyNone_Type) < 0)
1504		Py_FatalError("Can't initialize None type");
1505
1506	if (PyType_Ready(Py_Ellipsis->ob_type) < 0)
1507		Py_FatalError("Can't initialize type(Ellipsis)");
1508
1509	if (PyType_Ready(&PyNotImplemented_Type) < 0)
1510		Py_FatalError("Can't initialize NotImplemented type");
1511
1512	if (PyType_Ready(&PyTraceBack_Type) < 0)
1513		Py_FatalError("Can't initialize traceback type");
1514
1515	if (PyType_Ready(&PySuper_Type) < 0)
1516		Py_FatalError("Can't initialize super type");
1517
1518	if (PyType_Ready(&PyBaseObject_Type) < 0)
1519		Py_FatalError("Can't initialize object type");
1520
1521	if (PyType_Ready(&PyRange_Type) < 0)
1522		Py_FatalError("Can't initialize range type");
1523
1524	if (PyType_Ready(&PyDict_Type) < 0)
1525		Py_FatalError("Can't initialize dict type");
1526
1527	if (PyType_Ready(&PySet_Type) < 0)
1528		Py_FatalError("Can't initialize set type");
1529
1530	if (PyType_Ready(&PyUnicode_Type) < 0)
1531		Py_FatalError("Can't initialize str type");
1532
1533	if (PyType_Ready(&PySlice_Type) < 0)
1534		Py_FatalError("Can't initialize slice type");
1535
1536	if (PyType_Ready(&PyStaticMethod_Type) < 0)
1537		Py_FatalError("Can't initialize static method type");
1538
1539#ifndef WITHOUT_COMPLEX
1540	if (PyType_Ready(&PyComplex_Type) < 0)
1541		Py_FatalError("Can't initialize complex type");
1542#endif
1543	if (PyType_Ready(&PyFloat_Type) < 0)
1544		Py_FatalError("Can't initialize float type");
1545
1546	if (PyType_Ready(&PyLong_Type) < 0)
1547		Py_FatalError("Can't initialize int type");
1548
1549	if (PyType_Ready(&PyFrozenSet_Type) < 0)
1550		Py_FatalError("Can't initialize frozenset type");
1551
1552	if (PyType_Ready(&PyProperty_Type) < 0)
1553		Py_FatalError("Can't initialize property type");
1554
1555	if (PyType_Ready(&PyMemoryView_Type) < 0)
1556		Py_FatalError("Can't initialize memoryview type");
1557
1558	if (PyType_Ready(&PyTuple_Type) < 0)
1559		Py_FatalError("Can't initialize tuple type");
1560
1561	if (PyType_Ready(&PyEnum_Type) < 0)
1562		Py_FatalError("Can't initialize enumerate type");
1563
1564	if (PyType_Ready(&PyReversed_Type) < 0)
1565		Py_FatalError("Can't initialize reversed type");
1566
1567	if (PyType_Ready(&PyStdPrinter_Type) < 0)
1568		Py_FatalError("Can't initialize StdPrinter");
1569
1570	if (PyType_Ready(&PyCode_Type) < 0)
1571		Py_FatalError("Can't initialize code type");
1572
1573	if (PyType_Ready(&PyFrame_Type) < 0)
1574		Py_FatalError("Can't initialize frame type");
1575
1576	if (PyType_Ready(&PyCFunction_Type) < 0)
1577		Py_FatalError("Can't initialize builtin function type");
1578
1579	if (PyType_Ready(&PyMethod_Type) < 0)
1580		Py_FatalError("Can't initialize method type");
1581
1582	if (PyType_Ready(&PyFunction_Type) < 0)
1583		Py_FatalError("Can't initialize function type");
1584
1585	if (PyType_Ready(&PyDictProxy_Type) < 0)
1586		Py_FatalError("Can't initialize dict proxy type");
1587
1588	if (PyType_Ready(&PyGen_Type) < 0)
1589		Py_FatalError("Can't initialize generator type");
1590
1591	if (PyType_Ready(&PyGetSetDescr_Type) < 0)
1592		Py_FatalError("Can't initialize get-set descriptor type");
1593
1594	if (PyType_Ready(&PyWrapperDescr_Type) < 0)
1595		Py_FatalError("Can't initialize wrapper type");
1596
1597	if (PyType_Ready(&PyEllipsis_Type) < 0)
1598		Py_FatalError("Can't initialize ellipsis type");
1599
1600	if (PyType_Ready(&PyMemberDescr_Type) < 0)
1601		Py_FatalError("Can't initialize member descriptor type");
1602
1603	if (PyType_Ready(&PyFilter_Type) < 0)
1604		Py_FatalError("Can't initialize filter type");
1605
1606	if (PyType_Ready(&PyMap_Type) < 0)
1607		Py_FatalError("Can't initialize map type");
1608
1609	if (PyType_Ready(&PyZip_Type) < 0)
1610		Py_FatalError("Can't initialize zip type");
1611}
1612
1613
1614#ifdef Py_TRACE_REFS
1615
1616void
1617_Py_NewReference(PyObject *op)
1618{
1619	_Py_INC_REFTOTAL;
1620	op->ob_refcnt = 1;
1621	_Py_AddToAllObjects(op, 1);
1622	_Py_INC_TPALLOCS(op);
1623}
1624
1625void
1626_Py_ForgetReference(register PyObject *op)
1627{
1628#ifdef SLOW_UNREF_CHECK
1629        register PyObject *p;
1630#endif
1631	if (op->ob_refcnt < 0)
1632		Py_FatalError("UNREF negative refcnt");
1633	if (op == &refchain ||
1634	    op->_ob_prev->_ob_next != op || op->_ob_next->_ob_prev != op) {
1635		fprintf(stderr, "* ob\n");
1636		_PyObject_Dump(op);
1637		fprintf(stderr, "* op->_ob_prev->_ob_next\n");
1638		_PyObject_Dump(op->_ob_prev->_ob_next);
1639		fprintf(stderr, "* op->_ob_next->_ob_prev\n");
1640		_PyObject_Dump(op->_ob_next->_ob_prev);
1641		Py_FatalError("UNREF invalid object");
1642	}
1643#ifdef SLOW_UNREF_CHECK
1644	for (p = refchain._ob_next; p != &refchain; p = p->_ob_next) {
1645		if (p == op)
1646			break;
1647	}
1648	if (p == &refchain) /* Not found */
1649		Py_FatalError("UNREF unknown object");
1650#endif
1651	op->_ob_next->_ob_prev = op->_ob_prev;
1652	op->_ob_prev->_ob_next = op->_ob_next;
1653	op->_ob_next = op->_ob_prev = NULL;
1654	_Py_INC_TPFREES(op);
1655}
1656
1657void
1658_Py_Dealloc(PyObject *op)
1659{
1660	destructor dealloc = Py_TYPE(op)->tp_dealloc;
1661	_Py_ForgetReference(op);
1662	(*dealloc)(op);
1663}
1664
1665/* Print all live objects.  Because PyObject_Print is called, the
1666 * interpreter must be in a healthy state.
1667 */
1668void
1669_Py_PrintReferences(FILE *fp)
1670{
1671	PyObject *op;
1672	fprintf(fp, "Remaining objects:\n");
1673	for (op = refchain._ob_next; op != &refchain; op = op->_ob_next) {
1674		fprintf(fp, "%p [%" PY_FORMAT_SIZE_T "d] ", op, op->ob_refcnt);
1675		if (PyObject_Print(op, fp, 0) != 0)
1676			PyErr_Clear();
1677		putc('\n', fp);
1678	}
1679}
1680
1681/* Print the addresses of all live objects.  Unlike _Py_PrintReferences, this
1682 * doesn't make any calls to the Python C API, so is always safe to call.
1683 */
1684void
1685_Py_PrintReferenceAddresses(FILE *fp)
1686{
1687	PyObject *op;
1688	fprintf(fp, "Remaining object addresses:\n");
1689	for (op = refchain._ob_next; op != &refchain; op = op->_ob_next)
1690		fprintf(fp, "%p [%" PY_FORMAT_SIZE_T "d] %s\n", op,
1691			op->ob_refcnt, Py_TYPE(op)->tp_name);
1692}
1693
1694PyObject *
1695_Py_GetObjects(PyObject *self, PyObject *args)
1696{
1697	int i, n;
1698	PyObject *t = NULL;
1699	PyObject *res, *op;
1700
1701	if (!PyArg_ParseTuple(args, "i|O", &n, &t))
1702		return NULL;
1703	op = refchain._ob_next;
1704	res = PyList_New(0);
1705	if (res == NULL)
1706		return NULL;
1707	for (i = 0; (n == 0 || i < n) && op != &refchain; i++) {
1708		while (op == self || op == args || op == res || op == t ||
1709		       (t != NULL && Py_TYPE(op) != (PyTypeObject *) t)) {
1710			op = op->_ob_next;
1711			if (op == &refchain)
1712				return res;
1713		}
1714		if (PyList_Append(res, op) < 0) {
1715			Py_DECREF(res);
1716			return NULL;
1717		}
1718		op = op->_ob_next;
1719	}
1720	return res;
1721}
1722
1723#endif
1724
1725/* Hack to force loading of cobject.o */
1726PyTypeObject *_Py_cobject_hack = &PyCObject_Type;
1727
1728
1729/* Hack to force loading of pycapsule.o */
1730PyTypeObject *_PyCapsule_hack = &PyCapsule_Type;
1731
1732
1733/* Hack to force loading of abstract.o */
1734Py_ssize_t (*_Py_abstract_hack)(PyObject *) = PyObject_Size;
1735
1736
1737/* Python's malloc wrappers (see pymem.h) */
1738
1739void *
1740PyMem_Malloc(size_t nbytes)
1741{
1742	return PyMem_MALLOC(nbytes);
1743}
1744
1745void *
1746PyMem_Realloc(void *p, size_t nbytes)
1747{
1748	return PyMem_REALLOC(p, nbytes);
1749}
1750
1751void
1752PyMem_Free(void *p)
1753{
1754	PyMem_FREE(p);
1755}
1756
1757
1758/* These methods are used to control infinite recursion in repr, str, print,
1759   etc.  Container objects that may recursively contain themselves,
1760   e.g. builtin dictionaries and lists, should used Py_ReprEnter() and
1761   Py_ReprLeave() to avoid infinite recursion.
1762
1763   Py_ReprEnter() returns 0 the first time it is called for a particular
1764   object and 1 every time thereafter.  It returns -1 if an exception
1765   occurred.  Py_ReprLeave() has no return value.
1766
1767   See dictobject.c and listobject.c for examples of use.
1768*/
1769
1770#define KEY "Py_Repr"
1771
1772int
1773Py_ReprEnter(PyObject *obj)
1774{
1775	PyObject *dict;
1776	PyObject *list;
1777	Py_ssize_t i;
1778
1779	dict = PyThreadState_GetDict();
1780	if (dict == NULL)
1781		return 0;
1782	list = PyDict_GetItemString(dict, KEY);
1783	if (list == NULL) {
1784		list = PyList_New(0);
1785		if (list == NULL)
1786			return -1;
1787		if (PyDict_SetItemString(dict, KEY, list) < 0)
1788			return -1;
1789		Py_DECREF(list);
1790	}
1791	i = PyList_GET_SIZE(list);
1792	while (--i >= 0) {
1793		if (PyList_GET_ITEM(list, i) == obj)
1794			return 1;
1795	}
1796	PyList_Append(list, obj);
1797	return 0;
1798}
1799
1800void
1801Py_ReprLeave(PyObject *obj)
1802{
1803	PyObject *dict;
1804	PyObject *list;
1805	Py_ssize_t i;
1806
1807	dict = PyThreadState_GetDict();
1808	if (dict == NULL)
1809		return;
1810	list = PyDict_GetItemString(dict, KEY);
1811	if (list == NULL || !PyList_Check(list))
1812		return;
1813	i = PyList_GET_SIZE(list);
1814	/* Count backwards because we always expect obj to be list[-1] */
1815	while (--i >= 0) {
1816		if (PyList_GET_ITEM(list, i) == obj) {
1817			PyList_SetSlice(list, i, i + 1, NULL);
1818			break;
1819		}
1820	}
1821}
1822
1823/* Trashcan support. */
1824
1825/* Current call-stack depth of tp_dealloc calls. */
1826int _PyTrash_delete_nesting = 0;
1827
1828/* List of objects that still need to be cleaned up, singly linked via their
1829 * gc headers' gc_prev pointers.
1830 */
1831PyObject *_PyTrash_delete_later = NULL;
1832
1833/* Add op to the _PyTrash_delete_later list.  Called when the current
1834 * call-stack depth gets large.  op must be a currently untracked gc'ed
1835 * object, with refcount 0.  Py_DECREF must already have been called on it.
1836 */
1837void
1838_PyTrash_deposit_object(PyObject *op)
1839{
1840	assert(PyObject_IS_GC(op));
1841	assert(_Py_AS_GC(op)->gc.gc_refs == _PyGC_REFS_UNTRACKED);
1842	assert(op->ob_refcnt == 0);
1843	_Py_AS_GC(op)->gc.gc_prev = (PyGC_Head *)_PyTrash_delete_later;
1844	_PyTrash_delete_later = op;
1845}
1846
1847/* Dealloccate all the objects in the _PyTrash_delete_later list.  Called when
1848 * the call-stack unwinds again.
1849 */
1850void
1851_PyTrash_destroy_chain(void)
1852{
1853	while (_PyTrash_delete_later) {
1854		PyObject *op = _PyTrash_delete_later;
1855		destructor dealloc = Py_TYPE(op)->tp_dealloc;
1856
1857		_PyTrash_delete_later =
1858			(PyObject*) _Py_AS_GC(op)->gc.gc_prev;
1859
1860		/* Call the deallocator directly.  This used to try to
1861		 * fool Py_DECREF into calling it indirectly, but
1862		 * Py_DECREF was already called on this object, and in
1863		 * assorted non-release builds calling Py_DECREF again ends
1864		 * up distorting allocation statistics.
1865		 */
1866		assert(op->ob_refcnt == 0);
1867		++_PyTrash_delete_nesting;
1868		(*dealloc)(op);
1869		--_PyTrash_delete_nesting;
1870	}
1871}
1872
1873#ifdef __cplusplus
1874}
1875#endif
1876