Use PyThreadState_GET() in performance critical code

It seems like _PyThreadState_UncheckedGet() is not inlined as expected, even
when using gcc -O3.
This commit is contained in:
Victor Stinner 2016-11-11 01:43:56 +01:00
parent 7255edd3df
commit 0cae609847
3 changed files with 4 additions and 3 deletions

View file

@ -161,7 +161,7 @@ PyErr_SetString(PyObject *exception, const char *string)
PyObject *
PyErr_Occurred(void)
{
PyThreadState *tstate = _PyThreadState_UncheckedGet();
PyThreadState *tstate = PyThreadState_GET();
return tstate == NULL ? NULL : tstate->curexc_type;
}

View file

@ -1547,8 +1547,9 @@ error:
Py_XDECREF(name);
Py_XDECREF(value);
/* No return value, therefore clear error state if possible */
if (_PyThreadState_UncheckedGet())
if (_PyThreadState_UncheckedGet()) {
PyErr_Clear();
}
}
PyObject *