@@ -66,15 +66,13 @@ static zend_object_handlers zend_fiber_handlers;
66
66
67
67
static zend_function zend_fiber_function = { ZEND_INTERNAL_FUNCTION };
68
68
69
- typedef void * fcontext_t ;
69
+ typedef struct _zend_fiber_transfer {
70
+ zend_fiber_asm_handle handle ;
71
+ zend_fiber_context * previous ;
72
+ } zend_fiber_transfer ;
70
73
71
- typedef struct _transfer_t {
72
- fcontext_t context ;
73
- void * data ;
74
- } transfer_t ;
75
-
76
- extern fcontext_t make_fcontext (void * sp , size_t size , void (* fn )(transfer_t ));
77
- extern transfer_t jump_fcontext (fcontext_t to , void * vp );
74
+ extern zend_fiber_asm_handle make_fcontext (void * sp , size_t size , void (* fn )(zend_fiber_transfer ));
75
+ extern zend_fiber_transfer jump_fcontext (zend_fiber_asm_handle to , zend_fiber_context * previous );
78
76
79
77
#define ZEND_FIBER_DEFAULT_PAGE_SIZE 4096
80
78
@@ -181,12 +179,12 @@ static void zend_fiber_stack_free(zend_fiber_stack *stack)
181
179
stack -> pointer = NULL ;
182
180
}
183
181
184
- static ZEND_NORETURN void zend_fiber_trampoline (transfer_t transfer )
182
+ static ZEND_NORETURN void zend_fiber_trampoline (zend_fiber_transfer transfer )
185
183
{
186
184
zend_fiber_context * context = EG (current_fiber );
187
- zend_fiber_context * from = transfer .data ;
185
+ zend_fiber_context * from = transfer .previous ;
188
186
189
- from -> handle = transfer .context ;
187
+ from -> handle = transfer .handle ;
190
188
191
189
#ifdef __SANITIZE_ADDRESS__
192
190
__sanitizer_finish_switch_fiber (NULL , & from -> stack .prior_pointer , & from -> stack .prior_size );
@@ -261,16 +259,16 @@ ZEND_API zend_fiber_context *zend_fiber_switch_context(zend_fiber_context *to)
261
259
to -> stack .prior_size );
262
260
#endif
263
261
264
- transfer_t transfer = jump_fcontext (to -> handle , from );
262
+ zend_fiber_transfer transfer = jump_fcontext (to -> handle , from );
265
263
266
264
#ifdef __SANITIZE_ADDRESS__
267
265
__sanitizer_finish_switch_fiber (fake_stack , & to -> stack .prior_pointer , & to -> stack .prior_size );
268
266
#endif
269
267
270
268
EG (current_fiber ) = from ;
271
269
272
- zend_fiber_context * previous = transfer .data ;
273
- previous -> handle = transfer .context ;
270
+ zend_fiber_context * previous = transfer .previous ;
271
+ previous -> handle = transfer .handle ;
274
272
275
273
zend_fiber_restore_vm_state (& state );
276
274
0 commit comments