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);