Lines Matching refs:fiber

49 static zend_fiber_transfer zend_test_fiber_resume(zend_test_fiber *fiber, zval *value, bool excepti…  in zend_test_fiber_resume()  argument
53 fiber->caller = EG(current_fiber_context); in zend_test_fiber_resume()
54 ZT_G(active_fiber) = fiber; in zend_test_fiber_resume()
56 zend_fiber_transfer transfer = zend_test_fiber_switch_to(fiber->previous, value, exception); in zend_test_fiber_resume()
63 static zend_fiber_transfer zend_test_fiber_suspend(zend_test_fiber *fiber, zval *value) in zend_test_fiber_suspend() argument
65 ZEND_ASSERT(fiber->caller != NULL); in zend_test_fiber_suspend()
67 zend_fiber_context *caller = fiber->caller; in zend_test_fiber_suspend()
68 fiber->previous = EG(current_fiber_context); in zend_test_fiber_suspend()
69 fiber->caller = NULL; in zend_test_fiber_suspend()
76 zend_test_fiber *fiber = ZT_G(active_fiber); in zend_test_fiber_execute() local
99 EG(stack_base) = zend_fiber_stack_base(fiber->context.stack); in zend_test_fiber_execute()
100 EG(stack_limit) = zend_fiber_stack_limit(fiber->context.stack); in zend_test_fiber_execute()
102 fiber->fci.retval = &retval; in zend_test_fiber_execute()
104 zend_call_function(&fiber->fci, &fiber->fci_cache); in zend_test_fiber_execute()
106 zval_ptr_dtor(&fiber->result); // Destroy param from symmetric coroutine. in zend_test_fiber_execute()
107 zval_ptr_dtor(&fiber->fci.function_name); in zend_test_fiber_execute()
110 if (!(fiber->flags & ZEND_FIBER_FLAG_DESTROYED) in zend_test_fiber_execute()
113 fiber->flags |= ZEND_FIBER_FLAG_THREW; in zend_test_fiber_execute()
121 ZVAL_COPY_VALUE(&fiber->result, &retval); in zend_test_fiber_execute()
122 ZVAL_COPY(&transfer->value, &fiber->result); in zend_test_fiber_execute()
125 fiber->flags |= ZEND_FIBER_FLAG_BAILOUT; in zend_test_fiber_execute()
131 if (fiber->target) { in zend_test_fiber_execute()
132 zend_fiber_context *target = &fiber->target->context; in zend_test_fiber_execute()
136 ZVAL_COPY(&fiber->target->result, &fiber->result); in zend_test_fiber_execute()
137 fiber->target->fci.params = &fiber->target->result; in zend_test_fiber_execute()
138 fiber->target->fci.param_count = 1; in zend_test_fiber_execute()
140 fiber->target->caller = fiber->caller; in zend_test_fiber_execute()
141 ZT_G(active_fiber) = fiber->target; in zend_test_fiber_execute()
143 transfer->context = fiber->caller; in zend_test_fiber_execute()
146 fiber->caller = NULL; in zend_test_fiber_execute()
151 zend_test_fiber *fiber; in zend_test_fiber_object_create() local
153 fiber = emalloc(sizeof(zend_test_fiber)); in zend_test_fiber_object_create()
154 memset(fiber, 0, sizeof(zend_test_fiber)); in zend_test_fiber_object_create()
156 zend_object_std_init(&fiber->std, ce); in zend_test_fiber_object_create()
158 return &fiber->std; in zend_test_fiber_object_create()
163 zend_test_fiber *fiber = (zend_test_fiber *) object; in zend_test_fiber_object_destroy() local
165 if (fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED) { in zend_test_fiber_object_destroy()
172 fiber->flags |= ZEND_FIBER_FLAG_DESTROYED; in zend_test_fiber_object_destroy()
174 zend_fiber_transfer transfer = zend_test_fiber_resume(fiber, NULL, false); in zend_test_fiber_object_destroy()
197 zend_test_fiber *fiber = (zend_test_fiber *) object; in zend_test_fiber_object_free() local
199 if (fiber->context.status == ZEND_FIBER_STATUS_INIT) { in zend_test_fiber_object_free()
201 zval_ptr_dtor(&fiber->fci.function_name); in zend_test_fiber_object_free()
204 if (fiber->target) { in zend_test_fiber_object_free()
205 OBJ_RELEASE(&fiber->target->std); in zend_test_fiber_object_free()
208 zval_ptr_dtor(&fiber->result); in zend_test_fiber_object_free()
210 zend_object_std_dtor(&fiber->std); in zend_test_fiber_object_free()
214 zend_test_fiber *fiber, zend_fiber_transfer *transfer, INTERNAL_FUNCTION_PARAMETERS in delegate_transfer_result() argument
221 if (fiber->context.status == ZEND_FIBER_STATUS_DEAD) { in delegate_transfer_result()
231 zend_test_fiber *fiber = (zend_test_fiber *) Z_OBJ_P(getThis()); in ZEND_METHOD() local
234 Z_PARAM_FUNC(fiber->fci, fiber->fci_cache) in ZEND_METHOD()
238 Z_TRY_ADDREF(fiber->fci.function_name); in ZEND_METHOD()
243 zend_test_fiber *fiber = (zend_test_fiber *) Z_OBJ_P(getThis()); in ZEND_METHOD() local
252 ZEND_ASSERT(fiber->context.status == ZEND_FIBER_STATUS_INIT); in ZEND_METHOD()
254 if (fiber->previous != NULL) { in ZEND_METHOD()
259 fiber->fci.params = params; in ZEND_METHOD()
260 fiber->fci.param_count = param_count; in ZEND_METHOD()
261 fiber->fci.named_params = named_params; in ZEND_METHOD()
263 …zend_fiber_init_context(&fiber->context, zend_test_fiber_class, zend_test_fiber_execute, EG(fiber_… in ZEND_METHOD()
265 fiber->previous = &fiber->context; in ZEND_METHOD()
267 zend_fiber_transfer transfer = zend_test_fiber_resume(fiber, NULL, false); in ZEND_METHOD()
269 delegate_transfer_result(fiber, &transfer, INTERNAL_FUNCTION_PARAM_PASSTHRU); in ZEND_METHOD()
281 zend_test_fiber *fiber = ZT_G(active_fiber); in ZEND_METHOD() local
283 ZEND_ASSERT(fiber); in ZEND_METHOD()
285 zend_fiber_transfer transfer = zend_test_fiber_suspend(fiber, value); in ZEND_METHOD()
287 if (fiber->flags & ZEND_FIBER_FLAG_DESTROYED) { in ZEND_METHOD()
294 delegate_transfer_result(fiber, &transfer, INTERNAL_FUNCTION_PARAM_PASSTHRU); in ZEND_METHOD()
299 zend_test_fiber *fiber; in ZEND_METHOD() local
307 fiber = (zend_test_fiber *) Z_OBJ_P(getThis()); in ZEND_METHOD()
309 if (UNEXPECTED(fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL)) { in ZEND_METHOD()
314 zend_fiber_transfer transfer = zend_test_fiber_resume(fiber, value, false); in ZEND_METHOD()
316 delegate_transfer_result(fiber, &transfer, INTERNAL_FUNCTION_PARAM_PASSTHRU); in ZEND_METHOD()
328 zend_test_fiber *fiber = (zend_test_fiber *) Z_OBJ_P(getThis()); in ZEND_METHOD() local
335 target->previous = &fiber->context; in ZEND_METHOD()
337 if (fiber->target) { in ZEND_METHOD()
338 OBJ_RELEASE(&fiber->target->std); in ZEND_METHOD()
341 fiber->target = target; in ZEND_METHOD()