16 Apr
2004
16 Apr
'04
9:06 p.m.
Maybe something like this: #ifdef __GCC__ #define constant_p(x) __builtin_constant_p(x) #else #define constant_p(x) 0 #endif #define Py_INCREF(x) \ if( ! constant_p(x) || (x != Py_None && x != other immortals)) \ actual Py_INCREF body(x) this should allow the compiler, by constant propagation, to skip actual Py_INCREF body when it sees Py_INCREF(Py_None) and when it's Py_INCREF(nonconstant) to have no test for equality with the immortal values. does this actually work? I didn't check. I think that on some important systems there may be no equivalent to gcc's __builtin_constant_p(), and that Py_None is not a compile-time constant (*cough* DLLs *cough*) Jeff