@@ -311,13 +311,15 @@ struct _zend_async_event_s {
311
311
#define ZEND_ASYNC_EVENT_F_ZVAL_RESULT (1u << 3)
312
312
#define ZEND_ASYNC_EVENT_F_ZEND_OBJ (1u << 4) /* event is a zend object */
313
313
#define ZEND_ASYNC_EVENT_F_NO_FREE_MEMORY (1u << 5) /* event will not free memory in dispose handler */
314
+ #define ZEND_ASYNC_EVENT_F_EXCEPTION_HANDLED (1u << 6) /* exception has been caught and processed */
314
315
315
316
#define ZEND_ASYNC_EVENT_IS_CLOSED (ev ) (((ev)->flags & ZEND_ASYNC_EVENT_F_CLOSED) != 0)
316
317
#define ZEND_ASYNC_EVENT_WILL_RESULT_USED (ev ) (((ev)->flags & ZEND_ASYNC_EVENT_F_RESULT_USED) != 0)
317
318
#define ZEND_ASYNC_EVENT_WILL_EXC_CAUGHT (ev ) (((ev)->flags & ZEND_ASYNC_EVENT_F_EXC_CAUGHT) != 0)
318
319
#define ZEND_ASYNC_EVENT_WILL_ZVAL_RESULT (ev ) (((ev)->flags & ZEND_ASYNC_EVENT_F_ZVAL_RESULT) != 0)
319
320
#define ZEND_ASYNC_EVENT_IS_ZEND_OBJ (ev ) (((ev)->flags & ZEND_ASYNC_EVENT_F_ZEND_OBJ) != 0)
320
321
#define ZEND_ASYNC_EVENT_IS_NO_FREE_MEMORY (ev ) (((ev)->flags & ZEND_ASYNC_EVENT_F_NO_FREE_MEMORY) != 0)
322
+ #define ZEND_ASYNC_EVENT_IS_EXCEPTION_HANDLED (ev ) (((ev)->flags & ZEND_ASYNC_EVENT_F_EXCEPTION_HANDLED) != 0)
321
323
322
324
#define ZEND_ASYNC_EVENT_SET_CLOSED (ev ) ((ev)->flags |= ZEND_ASYNC_EVENT_F_CLOSED)
323
325
#define ZEND_ASYNC_EVENT_CLR_CLOSED (ev ) ((ev)->flags &= ~ZEND_ASYNC_EVENT_F_CLOSED)
@@ -336,6 +338,9 @@ struct _zend_async_event_s {
336
338
337
339
#define ZEND_ASYNC_EVENT_SET_NO_FREE_MEMORY (ev ) ((ev)->flags |= ZEND_ASYNC_EVENT_F_NO_FREE_MEMORY)
338
340
341
+ #define ZEND_ASYNC_EVENT_SET_EXCEPTION_HANDLED (ev ) ((ev)->flags |= ZEND_ASYNC_EVENT_F_EXCEPTION_HANDLED)
342
+ #define ZEND_ASYNC_EVENT_CLR_EXCEPTION_HANDLED (ev ) ((ev)->flags &= ~ZEND_ASYNC_EVENT_F_EXCEPTION_HANDLED)
343
+
339
344
// Convert awaitable Zend object to zend_async_event_t pointer
340
345
#define ZEND_ASYNC_OBJECT_TO_EVENT (obj ) ((zend_async_event_t *)((char *)(obj) - (obj)->handlers->offset))
341
346
#define ZEND_ASYNC_EVENT_TO_OBJECT (event ) ((zend_object *)((char *)(event) + (event)->zend_object_offset))
@@ -728,25 +733,24 @@ struct _zend_coroutine_s {
728
733
#define ZEND_COROUTINE_F_CANCELLED (1u << 11) /* coroutine is cancelled */
729
734
#define ZEND_COROUTINE_F_ZOMBIE (1u << 12) /* coroutine is a zombie */
730
735
#define ZEND_COROUTINE_F_PROTECTED (1u << 13) /* coroutine is protected */
731
- #define ZEND_COROUTINE_F_EXCEPTION_HANDLED (1u << 14) /* exception has been caught and processed */
732
- #define ZEND_COROUTINE_F_MAIN (1u << 15) /* coroutine is a main coroutine */
736
+ #define ZEND_COROUTINE_F_MAIN (1u << 14) /* coroutine is a main coroutine */
733
737
734
738
#define ZEND_COROUTINE_IS_ZOMBIE (coroutine ) (((coroutine)->event.flags & ZEND_COROUTINE_F_ZOMBIE) != 0)
735
739
#define ZEND_COROUTINE_SET_ZOMBIE (coroutine ) ((coroutine)->event.flags |= ZEND_COROUTINE_F_ZOMBIE)
736
740
#define ZEND_COROUTINE_IS_STARTED (coroutine ) (((coroutine)->event.flags & ZEND_COROUTINE_F_STARTED) != 0)
737
741
#define ZEND_COROUTINE_IS_CANCELLED (coroutine ) (((coroutine)->event.flags & ZEND_COROUTINE_F_CANCELLED) != 0)
738
742
#define ZEND_COROUTINE_IS_FINISHED (coroutine ) (((coroutine)->event.flags & ZEND_ASYNC_EVENT_F_CLOSED) != 0)
739
743
#define ZEND_COROUTINE_IS_PROTECTED (coroutine ) (((coroutine)->event.flags & ZEND_COROUTINE_F_PROTECTED) != 0)
740
- #define ZEND_COROUTINE_IS_EXCEPTION_HANDLED (coroutine ) ((( coroutine)->event.flags & ZEND_COROUTINE_F_EXCEPTION_HANDLED) != 0 )
744
+ #define ZEND_COROUTINE_IS_EXCEPTION_HANDLED (coroutine ) ZEND_ASYNC_EVENT_IS_EXCEPTION_HANDLED(&( coroutine)->event)
741
745
#define ZEND_COROUTINE_IS_MAIN (coroutine ) (((coroutine)->event.flags & ZEND_COROUTINE_F_MAIN) != 0)
742
746
#define ZEND_COROUTINE_SET_STARTED (coroutine ) ((coroutine)->event.flags |= ZEND_COROUTINE_F_STARTED)
743
747
#define ZEND_COROUTINE_SET_CANCELLED (coroutine ) ((coroutine)->event.flags |= ZEND_COROUTINE_F_CANCELLED)
744
748
#define ZEND_COROUTINE_SET_FINISHED (coroutine ) ((coroutine)->event.flags |= ZEND_ASYNC_EVENT_F_CLOSED)
745
749
#define ZEND_COROUTINE_SET_PROTECTED (coroutine ) ((coroutine)->event.flags |= ZEND_COROUTINE_F_PROTECTED)
746
750
#define ZEND_COROUTINE_SET_MAIN (coroutine ) ((coroutine)->event.flags |= ZEND_COROUTINE_F_MAIN)
747
751
#define ZEND_COROUTINE_CLR_PROTECTED (coroutine ) ((coroutine)->event.flags &= ~ZEND_COROUTINE_F_PROTECTED)
748
- #define ZEND_COROUTINE_SET_EXCEPTION_HANDLED (coroutine ) ( (coroutine)->event.flags |= ZEND_COROUTINE_F_EXCEPTION_HANDLED )
749
- #define ZEND_COROUTINE_CLR_EXCEPTION_HANDLED (coroutine ) ( (coroutine)->event.flags &= ~ZEND_COROUTINE_F_EXCEPTION_HANDLED )
752
+ #define ZEND_COROUTINE_SET_EXCEPTION_HANDLED (coroutine ) ZEND_ASYNC_EVENT_SET_EXCEPTION_HANDLED(& (coroutine)->event)
753
+ #define ZEND_COROUTINE_CLR_EXCEPTION_HANDLED (coroutine ) ZEND_ASYNC_EVENT_CLR_EXCEPTION_HANDLED(& (coroutine)->event)
750
754
751
755
static zend_always_inline zend_string * zend_coroutine_callable_name (const zend_coroutine_t * coroutine )
752
756
{
0 commit comments