summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2020-04-12 17:42:37 +0200
committerStefan Behnel <stefan_ml@behnel.de>2020-04-12 18:50:35 +0200
commit791605d25c6798c125ec213ac62ffd5360442912 (patch)
treecd8e7952f98078b9754284e0daaf01bacc6fcb5b
parent326a00e193b7bffe395e14a5b1eaabd3d5137879 (diff)
downloadcython-791605d25c6798c125ec213ac62ffd5360442912.tar.gz
Simplify some decref-set patterns using the __Pyx_Py_XDECREF_SET() macro.
-rw-r--r--Cython/Utility/Coroutine.c12
-rw-r--r--Cython/Utility/CythonFunction.c43
-rw-r--r--Cython/Utility/ModuleSetupCode.c4
3 files changed, 15 insertions, 44 deletions
diff --git a/Cython/Utility/Coroutine.c b/Cython/Utility/Coroutine.c
index 8e66257b9..add9455f6 100644
--- a/Cython/Utility/Coroutine.c
+++ b/Cython/Utility/Coroutine.c
@@ -1294,8 +1294,6 @@ __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, CYTHON_UNUSED void *contex
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
- PyObject *tmp;
-
#if PY_MAJOR_VERSION >= 3
if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
@@ -1306,10 +1304,8 @@ __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UN
"__name__ must be set to a string object");
return -1;
}
- tmp = self->gi_name;
Py_INCREF(value);
- self->gi_name = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(self->gi_name, value);
return 0;
}
@@ -1326,8 +1322,6 @@ __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, CYTHON_UNUSED void *co
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
- PyObject *tmp;
-
#if PY_MAJOR_VERSION >= 3
if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
@@ -1338,10 +1332,8 @@ __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, CYTHO
"__qualname__ must be set to a string object");
return -1;
}
- tmp = self->gi_qualname;
Py_INCREF(value);
- self->gi_qualname = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(self->gi_qualname, value);
return 0;
}
diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c
index 005aa4ff8..0a6bfd9cf 100644
--- a/Cython/Utility/CythonFunction.c
+++ b/Cython/Utility/CythonFunction.c
@@ -117,14 +117,12 @@ __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
- PyObject *tmp = op->func_doc;
if (value == NULL) {
// Mark as deleted
value = Py_None;
}
Py_INCREF(value);
- op->func_doc = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(op->func_doc, value);
return 0;
}
@@ -147,8 +145,6 @@ __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *contex
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
- PyObject *tmp;
-
#if PY_MAJOR_VERSION >= 3
if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
@@ -159,10 +155,8 @@ __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UN
"__name__ must be set to a string object");
return -1;
}
- tmp = op->func_name;
Py_INCREF(value);
- op->func_name = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(op->func_name, value);
return 0;
}
@@ -176,8 +170,6 @@ __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *co
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
- PyObject *tmp;
-
#if PY_MAJOR_VERSION >= 3
if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
@@ -188,10 +180,8 @@ __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHO
"__qualname__ must be set to a string object");
return -1;
}
- tmp = op->func_qualname;
Py_INCREF(value);
- op->func_qualname = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(op->func_qualname, value);
return 0;
}
@@ -222,8 +212,6 @@ __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *contex
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
- PyObject *tmp;
-
if (unlikely(value == NULL)) {
PyErr_SetString(PyExc_TypeError,
"function's dictionary may not be deleted");
@@ -234,10 +222,8 @@ __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UN
"setting function's dictionary to a non-dict");
return -1;
}
- tmp = op->func_dict;
Py_INCREF(value);
- op->func_dict = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(op->func_dict, value);
return 0;
}
@@ -290,7 +276,6 @@ __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
- PyObject* tmp;
if (!value) {
// del => explicit None to prevent rebuilding
value = Py_None;
@@ -300,9 +285,7 @@ __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHO
return -1;
}
Py_INCREF(value);
- tmp = op->defaults_tuple;
- op->defaults_tuple = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
return 0;
}
@@ -323,7 +306,6 @@ __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *co
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
- PyObject* tmp;
if (!value) {
// del => explicit None to prevent rebuilding
value = Py_None;
@@ -333,9 +315,7 @@ __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYT
return -1;
}
Py_INCREF(value);
- tmp = op->defaults_kwdict;
- op->defaults_kwdict = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
return 0;
}
@@ -356,7 +336,6 @@ __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
- PyObject* tmp;
if (!value || value == Py_None) {
value = NULL;
} else if (!PyDict_Check(value)) {
@@ -365,9 +344,7 @@ __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CY
return -1;
}
Py_XINCREF(value);
- tmp = op->func_annotations;
- op->func_annotations = value;
- Py_XDECREF(tmp);
+ __Pyx_Py_XDECREF_SET(op->func_annotations, value);
return 0;
}
@@ -1222,9 +1199,8 @@ __pyx_err:
__pyx_FusedFunctionObject *unbound = (__pyx_FusedFunctionObject *) unbound_result_func;
// TODO: move this to InitClassCell
- Py_CLEAR(unbound->func.func_classobj);
Py_XINCREF(self->func.func_classobj);
- unbound->func.func_classobj = self->func.func_classobj;
+ __Pyx_Py_XDECREF_SET(unbound->func.func_classobj, self->func.func_classobj);
result_func = __pyx_FusedFunction_descr_get(unbound_result_func,
self->self, self->self);
@@ -1320,8 +1296,7 @@ __pyx_FusedFunction_call(PyObject *func, PyObject *args, PyObject *kw)
goto bad;
Py_XINCREF(binding_func->func.func_classobj);
- Py_CLEAR(new_func->func.func_classobj);
- new_func->func.func_classobj = binding_func->func.func_classobj;
+ __Pyx_Py_XDECREF_SET(new_func->func.func_classobj, binding_func->func.func_classobj);
func = (PyObject *) new_func;
}
diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c
index 3ab02e8c6..f259c2e25 100644
--- a/Cython/Utility/ModuleSetupCode.c
+++ b/Cython/Utility/ModuleSetupCode.c
@@ -1377,6 +1377,10 @@ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void)
#define __Pyx_XGIVEREF(r)
#endif /* CYTHON_REFNANNY */
+#define __Pyx_Py_XDECREF_SET(r, v) do { \
+ PyObject *tmp = (PyObject *) r; \
+ r = v; Py_XDECREF(tmp); \
+ } while (0)
#define __Pyx_XDECREF_SET(r, v) do { \
PyObject *tmp = (PyObject *) r; \
r = v; __Pyx_XDECREF(tmp); \