nelhage · GitHub

In configure.ac, if the user passes --tail-call-interp in the negative, we set Py_TAIL_CALL_INTERP to 0:

if test "$withval" = no
then
AC_DEFINE([Py_TAIL_CALL_INTERP], [0],
[Define if you want to use tail-calling interpreters in CPython.])
AC_MSG_RESULT([no])
fi

However, in ceval_macros.h and bytecodes.c, we check for #ifdef Py_TAIL_CALL_INTERP and #if defined(Py_TAIL_CALL_INTERP), for instance:

#ifdef Py_TAIL_CALL_INTERP

)

Thus, defining the macro -- even with a value of 0 -- actually enables the feature! I think the consistent behavior (consistent with USE_COMPUTED_GOTOS) is probably to switch the preprocessor guards to #if, instead of #ifdef.

Linked PRs

Read the original on github.com ↗