Commit 51c22d32026 for php.net
commit 51c22d320263209632063ab9a8f500bd171151bd
Author: Tim Düsterhus <tim@bastelstu.be>
Date: Sun Jun 14 16:17:16 2026 +0200
zend_observer: Convert macros to inline functions (#22301)
* zend_observer: Convert `ZEND_OBSERVER_HANDLE()` to inline function
* zend_observer: Convert `ZEND_OBSERVER_FCALL_(BEGIN|END)()` to inline functions
diff --git a/Zend/zend_observer.h b/Zend/zend_observer.h
index f4ade29285d..bcfba35c065 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)))
@@ -45,18 +46,6 @@ extern ZEND_API bool zend_observer_class_linked_observed;
/* 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);
@@ -87,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;
}
@@ -126,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);