/* * Helper method from converting between a PHP function and a CufIter. */ static bool vm_decode_function_cufiter(const Variant& function, SmartCufIterPtr& cufIter) { ObjectData* obj = nullptr; HPHP::Class* cls = nullptr; HPHP::JIT::CallerFrame cf; StringData* invName = nullptr; // Don't warn here, let the caller decide what to do if the func is nullptr. const HPHP::Func* func = vm_decode_function(function, cf(), false, obj, cls, invName, false); if (func == nullptr) { return false; } cufIter = smart::make_unique<CufIter>(); cufIter->setFunc(func); cufIter->setName(invName); if (obj) { cufIter->setCtx(obj); obj->incRefCount(); } else { cufIter->setCtx(cls); } return true; }