use LIKELY/UNLIKELY macros for operations that run a lot.
This commit is contained in:
@@ -244,7 +244,7 @@ PyDoc_STRVAR(bpy_bm_is_valid_doc,
|
||||
);
|
||||
static PyObject *bpy_bm_is_valid_get(BPy_BMGeneric *self)
|
||||
{
|
||||
return PyBool_FromLong(self->bm != NULL);
|
||||
return PyBool_FromLong(BPY_BM_IS_VALID(self));
|
||||
}
|
||||
|
||||
|
||||
@@ -2453,13 +2453,15 @@ PyObject *BPy_BMElem_CreatePyObject(BMesh *bm, BMHeader *ele)
|
||||
|
||||
int bpy_bm_generic_valid_check(BPy_BMGeneric *self)
|
||||
{
|
||||
if (self->bm) {
|
||||
if (LIKELY(self->bm)) {
|
||||
return 0;
|
||||
}
|
||||
PyErr_Format(PyExc_ReferenceError,
|
||||
"BMesh data of type %.200s has been removed",
|
||||
Py_TYPE(self)->tp_name);
|
||||
return -1;
|
||||
else {
|
||||
PyErr_Format(PyExc_ReferenceError,
|
||||
"BMesh data of type %.200s has been removed",
|
||||
Py_TYPE(self)->tp_name);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
void bpy_bm_generic_invalidate(BPy_BMGeneric *self)
|
||||
@@ -2513,7 +2515,7 @@ void *BPy_BMElem_PySeq_As_Array(BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_
|
||||
error_prefix, type->tp_name, Py_TYPE(item)->tp_name);
|
||||
goto err_cleanup;
|
||||
}
|
||||
else if (item->bm == NULL) {
|
||||
else if (!BPY_BM_IS_VALID(item)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%s: %d %s has been removed",
|
||||
error_prefix, i, type->tp_name);
|
||||
|
||||
@@ -137,8 +137,10 @@ void *BPy_BMElem_PySeq_As_Array(BMesh **r_bm, PyObject *seq, Py_ssize_t min, Py_
|
||||
const char do_unique_check, const char do_bm_check,
|
||||
const char *error_prefix);
|
||||
|
||||
#define BPY_BM_CHECK_OBJ(obj) if (bpy_bm_generic_valid_check((BPy_BMGeneric *)obj) == -1) { return NULL; } (void)NULL
|
||||
#define BPY_BM_CHECK_INT(obj) if (bpy_bm_generic_valid_check((BPy_BMGeneric *)obj) == -1) { return -1; } (void)NULL
|
||||
#define BPY_BM_CHECK_OBJ(obj) if (UNLIKELY(bpy_bm_generic_valid_check((BPy_BMGeneric *)obj) == -1)) { return NULL; } (void)0
|
||||
#define BPY_BM_CHECK_INT(obj) if (UNLIKELY(bpy_bm_generic_valid_check((BPy_BMGeneric *)obj) == -1)) { return -1; } (void)0
|
||||
|
||||
#define BPY_BM_IS_VALID(obj) (LIKELY((obj)->bm != NULL))
|
||||
|
||||
#define BM_ITER_BPY_BM_SEQ(ele, iter, bpy_bmelemseq) \
|
||||
BM_ITER(ele, iter, (bpy_bmelemseq)->bm, (bpy_bmelemseq)->itype, \
|
||||
|
||||
Reference in New Issue
Block a user