From 242c93afca075d85b28ee45ef1b70f0b49232506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Sun, 14 Jun 2026 13:08:20 +0200 Subject: [PATCH 1/2] zend_observer: Convert `ZEND_OBSERVER_HANDLE()` to inline function --- Zend/zend_observer.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Zend/zend_observer.h b/Zend/zend_observer.h index f4ade29285db..ba0cfbbf055c 100644 --- a/Zend/zend_observer.h +++ b/Zend/zend_observer.h @@ -32,8 +32,9 @@ extern ZEND_API bool zend_observer_errors_observed; extern ZEND_API bool zend_observer_function_declared_observed; extern ZEND_API bool zend_observer_class_linked_observed; -#define ZEND_OBSERVER_HANDLE(function) (ZEND_USER_CODE((function)->type) \ - ? zend_observer_fcall_op_array_extension : zend_observer_fcall_internal_function_extension) +static zend_always_inline int ZEND_OBSERVER_HANDLE(const zend_function *function) { + return ZEND_USER_CODE(function->common.type) ? zend_observer_fcall_op_array_extension : zend_observer_fcall_internal_function_extension; +} #define ZEND_OBSERVER_DATA(function) \ ((zend_observer_fcall_begin_handler *)&ZEND_OP_ARRAY_EXTENSION((&(function)->common), ZEND_OBSERVER_HANDLE(function))) From 01b600efd0053e9d8d8e4fec0df7be69be54d187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Sun, 14 Jun 2026 13:11:54 +0200 Subject: [PATCH 2/2] zend_observer: Convert `ZEND_OBSERVER_FCALL_(BEGIN|END)()` to inline functions --- Zend/zend_observer.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Zend/zend_observer.h b/Zend/zend_observer.h index ba0cfbbf055c..bcfba35c0658 100644 --- a/Zend/zend_observer.h +++ b/Zend/zend_observer.h @@ -46,18 +46,6 @@ static zend_always_inline int ZEND_OBSERVER_HANDLE(const zend_function *function /* Omit zend_observer_fcall_internal_function_extension check, they are set at the same time. */ #define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1) -#define ZEND_OBSERVER_FCALL_BEGIN(execute_data) do { \ - if (ZEND_OBSERVER_ENABLED) { \ - zend_observer_fcall_begin(execute_data); \ - } \ - } while (0) - -#define ZEND_OBSERVER_FCALL_END(execute_data, return_value) do { \ - if (ZEND_OBSERVER_ENABLED) { \ - zend_observer_fcall_end(execute_data, return_value); \ - } \ - } while (0) - typedef void (*zend_observer_fcall_begin_handler)(zend_execute_data *execute_data); typedef void (*zend_observer_fcall_end_handler)(zend_execute_data *execute_data, zval *retval); @@ -88,6 +76,12 @@ ZEND_API void ZEND_FASTCALL zend_observer_fcall_begin(zend_execute_data *execute /* prechecked: the call is actually observed. */ ZEND_API void ZEND_FASTCALL zend_observer_fcall_begin_prechecked(zend_execute_data *execute_data, zend_observer_fcall_begin_handler *observer_data); +static zend_always_inline void ZEND_OBSERVER_FCALL_BEGIN(zend_execute_data *execute_data) { + if (ZEND_OBSERVER_ENABLED) { + zend_observer_fcall_begin(execute_data); + } +} + static zend_always_inline bool zend_observer_handler_is_unobserved(const zend_observer_fcall_begin_handler *handler) { return *handler == ZEND_OBSERVER_NONE_OBSERVED; } @@ -127,6 +121,12 @@ static zend_always_inline void zend_observer_fcall_end(zend_execute_data *execut } } +static zend_always_inline void ZEND_OBSERVER_FCALL_END(zend_execute_data *execute_data, zval *return_value) { + if (ZEND_OBSERVER_ENABLED) { + zend_observer_fcall_end(execute_data, return_value); + } +} + ZEND_API void zend_observer_fcall_end_all(void); typedef void (*zend_observer_function_declared_cb)(zend_op_array *op_array, zend_string *name);