For C code that calls Tcl public routines that accept (Tcl_Obj *) arguments, the most efficient techniques for reference count management rely on knowing which routines are known safe to pass a zero-ref Tcl_Obj to.
These are the routines that do not make any call to Tcl_DecrRefCount() on the argument, and do not call anything else that does. Here's the start of a list. Please add to it:
* Tcl_GetStringFromObj() * Tcl_GetIndexFromObj() * Tcl_GetIndexFromObjStruct()