void c_SetResultToRefWaitHandle::markAsSucceeded(const Cell& result) {
  RefData* ref = m_ref;

  m_ref = nullptr;
  cellSet(result, *ref->tv());
  decRefRef(ref);

  setResult(result);
  m_child = nullptr;
}
void c_SetResultToRefWaitHandle::markAsFailed(CObjRef exception) {
  RefData* ref = m_ref;

  m_ref = nullptr;
  tvSetIgnoreRef(make_tv<KindOfNull>(), *ref->tv());
  decRefRef(ref);

  setException(exception.get());
  m_child = nullptr;
}
void c_SetResultToRefWaitHandle::markAsSucceeded(const TypedValue* result) {
  RefData* ref = m_ref;

  m_ref = nullptr;
  tvSetIgnoreRef(result, ref->tv());
  decRefRef(ref);

  setResult(result);
  m_child = nullptr;
}