Object f_hphp_recursiveiteratoriterator___construct(CObjRef obj, CObjRef iterator, int64 mode, int64 flags) { if (iterator->o_instanceof("RecursiveDirectoryIterator")) { CVarRef rsrc = iterator->o_get("rsrc", true, "SplFileInfo"); obj->o_set("rsrc", NEWOBJ(RecursiveIteratorIterator)(rsrc, mode, flags), "RecursiveIteratorIterator"); return obj; } throw NotImplementedException("this type of iterator"); }
void f_hphp_unpack_continuation(CObjRef continuation) { if (hhvm) { throw_fatal("hphp_unpack_continuation is not supported under hhvm"); } if (UNLIKELY(!continuation->o_instanceof("GenericContinuation"))) { throw_fatal( "Cannot call hphp_unpack_continuation with a " "non-GenericContinuation object"); } Eval::VariableEnvironment *env = FrameInjection::GetVariableEnvironment(true); if (UNLIKELY(!env)) { throw_fatal("Invalid call hphp_unpack_continuation"); } p_GenericContinuation c( static_cast<c_GenericContinuation*>(continuation.get())); extract(env, c->t_getvars(), 256 /* EXTR_REFS */); }
void f_hphp_pack_continuation(CObjRef continuation, int64 label, CVarRef value) { if (hhvm) { throw_fatal("hphp_pack_continuation is not supported under hhvm"); } if (UNLIKELY(!continuation->o_instanceof("GenericContinuation"))) { throw_fatal( "Cannot call hphp_pack_continuation with a " "non-GenericContinuation object"); } Array definedVariables; Eval::VariableEnvironment *env = FrameInjection::GetVariableEnvironment(true); if (UNLIKELY(!env)) { throw_fatal("Invalid call hphp_pack_continuation"); } definedVariables = env->getDefinedVariables(); p_GenericContinuation c( static_cast<c_GenericContinuation*>(continuation.get())); c->t_update(label, value, definedVariables); }