Exemple #1
0
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);
}
Exemple #2
0
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);
    }
}