Skip to content

Commit 51c22d3

Browse files
authored
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
1 parent c76b33d commit 51c22d3

1 file changed

Lines changed: 15 additions & 14 deletions

File tree

Zend/zend_observer.h

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ extern ZEND_API bool zend_observer_errors_observed;
3232
extern ZEND_API bool zend_observer_function_declared_observed;
3333
extern ZEND_API bool zend_observer_class_linked_observed;
3434

35-
#define ZEND_OBSERVER_HANDLE(function) (ZEND_USER_CODE((function)->type) \
36-
? zend_observer_fcall_op_array_extension : zend_observer_fcall_internal_function_extension)
35+
static zend_always_inline int ZEND_OBSERVER_HANDLE(const zend_function *function) {
36+
return ZEND_USER_CODE(function->common.type) ? zend_observer_fcall_op_array_extension : zend_observer_fcall_internal_function_extension;
37+
}
3738

3839
#define ZEND_OBSERVER_DATA(function) \
3940
((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;
4546
/* Omit zend_observer_fcall_internal_function_extension check, they are set at the same time. */
4647
#define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1)
4748

48-
#define ZEND_OBSERVER_FCALL_BEGIN(execute_data) do { \
49-
if (ZEND_OBSERVER_ENABLED) { \
50-
zend_observer_fcall_begin(execute_data); \
51-
} \
52-
} while (0)
53-
54-
#define ZEND_OBSERVER_FCALL_END(execute_data, return_value) do { \
55-
if (ZEND_OBSERVER_ENABLED) { \
56-
zend_observer_fcall_end(execute_data, return_value); \
57-
} \
58-
} while (0)
59-
6049
typedef void (*zend_observer_fcall_begin_handler)(zend_execute_data *execute_data);
6150
typedef void (*zend_observer_fcall_end_handler)(zend_execute_data *execute_data, zval *retval);
6251

@@ -87,6 +76,12 @@ ZEND_API void ZEND_FASTCALL zend_observer_fcall_begin(zend_execute_data *execute
8776
/* prechecked: the call is actually observed. */
8877
ZEND_API void ZEND_FASTCALL zend_observer_fcall_begin_prechecked(zend_execute_data *execute_data, zend_observer_fcall_begin_handler *observer_data);
8978

79+
static zend_always_inline void ZEND_OBSERVER_FCALL_BEGIN(zend_execute_data *execute_data) {
80+
if (ZEND_OBSERVER_ENABLED) {
81+
zend_observer_fcall_begin(execute_data);
82+
}
83+
}
84+
9085
static zend_always_inline bool zend_observer_handler_is_unobserved(const zend_observer_fcall_begin_handler *handler) {
9186
return *handler == ZEND_OBSERVER_NONE_OBSERVED;
9287
}
@@ -126,6 +121,12 @@ static zend_always_inline void zend_observer_fcall_end(zend_execute_data *execut
126121
}
127122
}
128123

124+
static zend_always_inline void ZEND_OBSERVER_FCALL_END(zend_execute_data *execute_data, zval *return_value) {
125+
if (ZEND_OBSERVER_ENABLED) {
126+
zend_observer_fcall_end(execute_data, return_value);
127+
}
128+
}
129+
129130
ZEND_API void zend_observer_fcall_end_all(void);
130131

131132
typedef void (*zend_observer_function_declared_cb)(zend_op_array *op_array, zend_string *name);

0 commit comments

Comments
 (0)