Struct TVMFFIObject#
Defined in File c_api.h
Struct Documentation#
-
struct TVMFFIObject#
C-based type of all FFI object header that allocates on heap.
Public Members
-
uint64_t combined_ref_count#
Combined strong and weak reference counter of the object.
Strong ref counter is packed into the lower 32 bits. Weak ref counter is packed into the upper 32 bits.
It is equivalent to { uint32_t strong_ref_count, uint32_t weak_ref_count } in little-endian structure:
strong_ref_count:
combined_ref_count & 0xFFFFFFFF
weak_ref_count:
(combined_ref_count >> 32) & 0xFFFFFFFF
Rationale: atomic ops on strong ref counter remains the same as +1/-1, this combined ref counter allows us to use u64 atomic once instead of a separate atomic read of weak counter during deletion.
The ref counter goes first to align ABI with most intrusive ptr designs. It is also likely more efficient as rc operations can be quite common.
-
int32_t type_index#
type index of the object.
Note
The type index of Object and Any are shared in FFI.
-
uint32_t __padding#
Extra padding to ensure 8 bytes alignment.
-
void (*deleter)(void *self, int flags)#
Deleter to be invoked when strong reference counter goes to zero.
See also
TVMFFIObjectDeleterFlagBitMask
- Param self:
The self object handle.
- Param flags:
The flags to indicate deletion behavior.
-
int64_t __ensure_align#
auxilary field to TVMFFIObject is always 8 bytes aligned.
Note
This helps us to ensure cross platform compatibility.
-
uint64_t combined_ref_count#