@@ -66,13 +66,15 @@ static zend_object_handlers zend_fiber_handlers;
66
66
67
67
static zend_function zend_fiber_function = { ZEND_INTERNAL_FUNCTION };
68
68
69
- typedef struct _zend_fiber_transfer {
70
- zend_fiber_asm_handle handle ;
71
- zend_fiber_context * previous ;
72
- } zend_fiber_transfer ;
69
+ typedef void * fcontext_t ;
73
70
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 );
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 );
76
78
77
79
#define ZEND_FIBER_DEFAULT_PAGE_SIZE 4096
78
80
@@ -179,12 +181,12 @@ static void zend_fiber_stack_free(zend_fiber_stack *stack)
179
181
stack -> pointer = NULL ;
180
182
}
181
183
182
- static ZEND_NORETURN void zend_fiber_trampoline (zend_fiber_transfer transfer )
184
+ static ZEND_NORETURN void zend_fiber_trampoline (transfer_t transfer )
183
185
{
184
186
zend_fiber_context * context = EG (current_fiber );
185
- zend_fiber_context * from = transfer .previous ;
187
+ zend_fiber_context * from = transfer .data ;
186
188
187
- from -> handle = transfer .handle ;
189
+ from -> handle = transfer .context ;
188
190
189
191
#ifdef __SANITIZE_ADDRESS__
190
192
__sanitizer_finish_switch_fiber (NULL , & from -> stack .prior_pointer , & from -> stack .prior_size );
@@ -252,16 +254,16 @@ ZEND_API zend_fiber_context *zend_fiber_switch_context(zend_fiber_context *to)
252
254
to -> stack .prior_size );
253
255
#endif
254
256
255
- zend_fiber_transfer transfer = jump_fcontext (to -> handle , from );
257
+ transfer_t transfer = jump_fcontext (to -> handle , from );
256
258
257
259
#ifdef __SANITIZE_ADDRESS__
258
260
__sanitizer_finish_switch_fiber (fake_stack , & to -> stack .prior_pointer , & to -> stack .prior_size );
259
261
#endif
260
262
261
263
EG (current_fiber ) = from ;
262
264
263
- zend_fiber_context * previous = transfer .previous ;
264
- previous -> handle = transfer .handle ;
265
+ zend_fiber_context * previous = transfer .data ;
266
+ previous -> handle = transfer .context ;
265
267
266
268
zend_fiber_restore_vm_state (& state );
267
269
0 commit comments