bool tvDecRefWillRelease(TypedValue* tv) { if (!isRefcountedType(tv->m_type)) { return false; } if (tv->m_type == KindOfRef) { return tv->m_data.pref->getRealCount() <= 1; } return TV_GENERIC_DISPATCH(*tv, decWillRelease); }
void tvDecRefHelper(DataType type, uint64_t datum) noexcept { assert(type == KindOfString || type == KindOfArray || type == KindOfObject || type == KindOfResource || type == KindOfRef); TypedValue tmp; tmp.m_type = type; tmp.m_data.num = datum; if (TV_GENERIC_DISPATCH(tmp, decReleaseCheck)) { g_destructors[typeToDestrIdx(type)]((void*)datum); } }