astobj2 objects are always prepended this data structure, which contains a lock, a reference counter, the flags and a pointer to a destructor. The refcount is used to decide when it is time to invoke the destructor. The magic number is used for consistency check. XXX the lock is not always needed, and its initialization may be expensive. Consider making it external.