GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing mail.python.org — [Python-Dev] Why is type_modified() in typeobject.c not a public function? [Python-Dev] Why is type_modified() in typeobject.c not a public function?Antoine Pitrou solipsis at pitrou.netThu May 29 11:22:02 CEST 2008
Stefan Behnel <stefan_ml <at> behnel.de> writes:
> BTW, I noticed that the code in typeobject.c uses "DECREF before set" two
> times, like this:
>
> method_cache[h].version = type->tp_version_tag;
> method_cache[h].value = res; /* borrowed */
> Py_INCREF(name);
> Py_DECREF(method_cache[h].name);
> method_cache[h].name = name;
Since this is so common, would it be useful to define a macro for the correct
construct?
Something like
#define Py_SETREF(var, obj) \
{ PyObject *tmp = (var); Py_INCREF(obj); \
(var) = (obj); Py_XDECREF(tmp); }
Or, if we want to allow more optimizations, make two versions of it:
#define Py_SETREF(var, obj) \
{ PyObject *tmp = (var); Py_INCREF(obj); \
(var) = (obj); Py_DECREF(tmp); }
#define Py_XSETREF(var, obj) \
{ PyObject *tmp = (var); Py_INCREF(obj); \
(var) = (obj); Py_XDECREF(tmp); }
Regards
Antoine.
More information about the Python-Dev mailing list |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |