Lines Matching refs:fiber

544 	zend_fiber *fiber = zend_fiber_from_context(context);  in zend_fiber_cleanup()  local
547 EG(vm_stack) = fiber->vm_stack; in zend_fiber_cleanup()
550 fiber->execute_data = NULL; in zend_fiber_cleanup()
551 fiber->stack_bottom = NULL; in zend_fiber_cleanup()
552 fiber->caller = NULL; in zend_fiber_cleanup()
560 zend_fiber *fiber = EG(active_fiber); in zend_fiber_execute() local
578 fiber->execute_data = (zend_execute_data *) stack->top; in zend_fiber_execute()
579 fiber->stack_bottom = fiber->execute_data; in zend_fiber_execute()
581 memset(fiber->execute_data, 0, sizeof(zend_execute_data)); in zend_fiber_execute()
583 fiber->execute_data->func = &zend_fiber_function; in zend_fiber_execute()
584 fiber->stack_bottom->prev_execute_data = EG(current_execute_data); in zend_fiber_execute()
586 EG(current_execute_data) = fiber->execute_data; in zend_fiber_execute()
591 EG(stack_base) = zend_fiber_stack_base(fiber->context.stack); in zend_fiber_execute()
592 EG(stack_limit) = zend_fiber_stack_limit(fiber->context.stack); in zend_fiber_execute()
595 fiber->fci.retval = &fiber->result; in zend_fiber_execute()
597 zend_call_function(&fiber->fci, &fiber->fci_cache); in zend_fiber_execute()
600 zval_ptr_dtor(&fiber->fci.function_name); in zend_fiber_execute()
601 ZVAL_UNDEF(&fiber->fci.function_name); in zend_fiber_execute()
604 if (!(fiber->flags & ZEND_FIBER_FLAG_DESTROYED) in zend_fiber_execute()
607 fiber->flags |= ZEND_FIBER_FLAG_THREW; in zend_fiber_execute()
616 fiber->flags |= ZEND_FIBER_FLAG_BAILOUT; in zend_fiber_execute()
620 fiber->context.cleanup = &zend_fiber_cleanup; in zend_fiber_execute()
621 fiber->vm_stack = EG(vm_stack); in zend_fiber_execute()
623 transfer->context = fiber->caller; in zend_fiber_execute()
664 static zend_always_inline zend_fiber_transfer zend_fiber_resume(zend_fiber *fiber, zval *value, boo… in zend_fiber_resume() argument
672 fiber->caller = EG(current_fiber_context); in zend_fiber_resume()
673 EG(active_fiber) = fiber; in zend_fiber_resume()
675 zend_fiber_transfer transfer = zend_fiber_switch_to(fiber->previous, value, exception); in zend_fiber_resume()
682 static zend_always_inline zend_fiber_transfer zend_fiber_suspend(zend_fiber *fiber, zval *value) in zend_fiber_suspend() argument
684 ZEND_ASSERT(fiber->caller != NULL); in zend_fiber_suspend()
686 zend_fiber_context *caller = fiber->caller; in zend_fiber_suspend()
687 fiber->previous = EG(current_fiber_context); in zend_fiber_suspend()
688 fiber->caller = NULL; in zend_fiber_suspend()
689 fiber->execute_data = EG(current_execute_data); in zend_fiber_suspend()
696 zend_fiber *fiber = emalloc(sizeof(zend_fiber)); in zend_fiber_object_create() local
697 memset(fiber, 0, sizeof(zend_fiber)); in zend_fiber_object_create()
699 zend_object_std_init(&fiber->std, ce); in zend_fiber_object_create()
700 return &fiber->std; in zend_fiber_object_create()
705 zend_fiber *fiber = (zend_fiber *) object; in zend_fiber_object_destroy() local
707 if (fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED) { in zend_fiber_object_destroy()
717 fiber->flags |= ZEND_FIBER_FLAG_DESTROYED; in zend_fiber_object_destroy()
719 zend_fiber_transfer transfer = zend_fiber_resume(fiber, &graceful_exit, true); in zend_fiber_object_destroy()
744 zend_fiber *fiber = (zend_fiber *) object; in zend_fiber_object_free() local
746 zval_ptr_dtor(&fiber->fci.function_name); in zend_fiber_object_free()
747 zval_ptr_dtor(&fiber->result); in zend_fiber_object_free()
749 zend_object_std_dtor(&fiber->std); in zend_fiber_object_free()
754 zend_fiber *fiber = (zend_fiber *) object; in zend_fiber_object_gc() local
757 zend_get_gc_buffer_add_zval(buf, &fiber->fci.function_name); in zend_fiber_object_gc()
758 zend_get_gc_buffer_add_zval(buf, &fiber->result); in zend_fiber_object_gc()
760 if (fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL) { in zend_fiber_object_gc()
766 zend_execute_data *ex = fiber->execute_data; in zend_fiber_object_gc()
815 zend_fiber *fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD() local
817 …if (UNEXPECTED(fiber->context.status != ZEND_FIBER_STATUS_INIT || Z_TYPE(fiber->fci.function_name)… in ZEND_METHOD()
822 fiber->fci = fci; in ZEND_METHOD()
823 fiber->fci_cache = fcc; in ZEND_METHOD()
826 Z_TRY_ADDREF(fiber->fci.function_name); in ZEND_METHOD()
831 zend_fiber *fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD() local
834 Z_PARAM_VARIADIC_WITH_NAMED(fiber->fci.params, fiber->fci.param_count, fiber->fci.named_params); in ZEND_METHOD()
842 if (fiber->context.status != ZEND_FIBER_STATUS_INIT) { in ZEND_METHOD()
847 …if (zend_fiber_init_context(&fiber->context, zend_ce_fiber, zend_fiber_execute, EG(fiber_stack_siz… in ZEND_METHOD()
851 fiber->previous = &fiber->context; in ZEND_METHOD()
853 zend_fiber_transfer transfer = zend_fiber_resume(fiber, NULL, false); in ZEND_METHOD()
867 zend_fiber *fiber = EG(active_fiber); in ZEND_METHOD() local
869 if (UNEXPECTED(!fiber)) { in ZEND_METHOD()
874 if (UNEXPECTED(fiber->flags & ZEND_FIBER_FLAG_DESTROYED)) { in ZEND_METHOD()
884 …ZEND_ASSERT(fiber->context.status == ZEND_FIBER_STATUS_RUNNING || fiber->context.status == ZEND_FI… in ZEND_METHOD()
886 fiber->stack_bottom->prev_execute_data = NULL; in ZEND_METHOD()
888 zend_fiber_transfer transfer = zend_fiber_suspend(fiber, value); in ZEND_METHOD()
895 zend_fiber *fiber; in ZEND_METHOD() local
908 fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD()
910 if (UNEXPECTED(fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL)) { in ZEND_METHOD()
915 fiber->stack_bottom->prev_execute_data = EG(current_execute_data); in ZEND_METHOD()
917 zend_fiber_transfer transfer = zend_fiber_resume(fiber, value, false); in ZEND_METHOD()
924 zend_fiber *fiber; in ZEND_METHOD() local
936 fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD()
938 if (UNEXPECTED(fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL)) { in ZEND_METHOD()
943 fiber->stack_bottom->prev_execute_data = EG(current_execute_data); in ZEND_METHOD()
945 zend_fiber_transfer transfer = zend_fiber_resume(fiber, exception, true); in ZEND_METHOD()
952 zend_fiber *fiber; in ZEND_METHOD() local
956 fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD()
958 RETURN_BOOL(fiber->context.status != ZEND_FIBER_STATUS_INIT); in ZEND_METHOD()
963 zend_fiber *fiber; in ZEND_METHOD() local
967 fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD()
969 RETURN_BOOL(fiber->context.status == ZEND_FIBER_STATUS_SUSPENDED && fiber->caller == NULL); in ZEND_METHOD()
974 zend_fiber *fiber; in ZEND_METHOD() local
978 fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD()
980 RETURN_BOOL(fiber->context.status == ZEND_FIBER_STATUS_RUNNING || fiber->caller != NULL); in ZEND_METHOD()
985 zend_fiber *fiber; in ZEND_METHOD() local
989 fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD()
991 RETURN_BOOL(fiber->context.status == ZEND_FIBER_STATUS_DEAD); in ZEND_METHOD()
996 zend_fiber *fiber; in ZEND_METHOD() local
1001 fiber = (zend_fiber *) Z_OBJ_P(ZEND_THIS); in ZEND_METHOD()
1003 if (fiber->context.status == ZEND_FIBER_STATUS_DEAD) { in ZEND_METHOD()
1004 if (fiber->flags & ZEND_FIBER_FLAG_THREW) { in ZEND_METHOD()
1006 } else if (fiber->flags & ZEND_FIBER_FLAG_BAILOUT) { in ZEND_METHOD()
1009 RETURN_COPY_DEREF(&fiber->result); in ZEND_METHOD()
1011 } else if (fiber->context.status == ZEND_FIBER_STATUS_INIT) { in ZEND_METHOD()
1025 zend_fiber *fiber = EG(active_fiber); in ZEND_METHOD() local
1027 if (!fiber) { in ZEND_METHOD()
1031 RETURN_OBJ_COPY(&fiber->std); in ZEND_METHOD()