Unfortunately, all my benchmarks show this patch to be ineffective in terms of speeding up the interpreter. Anyone know why?
I guess because you took PyObject_IsTrue. After profiling some application, I found that this is a frequent function, so I thought it should be optimized.
I then found that most of the time, it gets Py_True, Py_False, or Py_None as an argument, so I checked for identity with these objects. Indeed, that covered the majority of the calls - but with no significant speed gain when special-cased.
So I think I agree with Guido: even as these functions are frequently called, this is not where the time is consumed.