| 24999 | /* PyFunctionFastCall */ |
| 25000 | #if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL |
| 25001 | static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, |
| 25002 | PyObject *globals) { |
| 25003 | PyFrameObject *f; |
| 25004 | PyThreadState *tstate = __Pyx_PyThreadState_Current; |
| 25005 | PyObject **fastlocals; |
| 25006 | Py_ssize_t i; |
| 25007 | PyObject *result; |
| 25008 | assert(globals != NULL); |
| 25009 | /* XXX Perhaps we should create a specialized |
| 25010 | PyFrame_New() that doesn't take locals, but does |
| 25011 | take builtins without sanity checking them. |
| 25012 | */ |
| 25013 | assert(tstate != NULL); |
| 25014 | f = PyFrame_New(tstate, co, globals, NULL); |
| 25015 | if (f == NULL) { |
| 25016 | return NULL; |
| 25017 | } |
| 25018 | fastlocals = __Pyx_PyFrame_GetLocalsplus(f); |
| 25019 | for (i = 0; i < na; i++) { |
| 25020 | Py_INCREF(*args); |
| 25021 | fastlocals[i] = *args++; |
| 25022 | } |
| 25023 | result = PyEval_EvalFrameEx(f,0); |
| 25024 | ++tstate->recursion_depth; |
| 25025 | Py_DECREF(f); |
| 25026 | --tstate->recursion_depth; |
| 25027 | return result; |
| 25028 | } |
| 25029 | static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { |
| 25030 | PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); |
| 25031 | PyObject *globals = PyFunction_GET_GLOBALS(func); |