From 1e968f45d56dd25d1f77cced8a14bc7977dda37c Mon Sep 17 00:00:00 2001 From: Weilin Du Date: Fri, 31 Jul 2026 17:18:59 +0800 Subject: [PATCH 1/3] Zend: Refactor deduplicate auto-global checks --- Zend/zend_compile.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 9c80cccb7cb9..088573a50ee8 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1995,30 +1995,27 @@ static void zend_do_extended_fcall_end(void) /* {{{ */ } /* }}} */ -ZEND_API bool zend_is_auto_global_str(const char *name, size_t len) /* {{{ */ { - zend_auto_global *auto_global; +static zend_always_inline bool zend_auto_global_check(zend_auto_global *auto_global) +{ + if (auto_global == NULL) { + return false; + } - if ((auto_global = zend_hash_str_find_ptr(CG(auto_globals), name, len)) != NULL) { - if (auto_global->armed) { - auto_global->armed = auto_global->auto_global_callback(auto_global->name); - } - return 1; + if (auto_global->armed) { + auto_global->armed = auto_global->auto_global_callback(auto_global->name); } - return 0; + return true; +} + +ZEND_API bool zend_is_auto_global_str(const char *name, size_t len) /* {{{ */ +{ + return zend_auto_global_check(zend_hash_str_find_ptr(CG(auto_globals), name, len)); } /* }}} */ ZEND_API bool zend_is_auto_global(zend_string *name) /* {{{ */ { - zend_auto_global *auto_global; - - if ((auto_global = zend_hash_find_ptr(CG(auto_globals), name)) != NULL) { - if (auto_global->armed) { - auto_global->armed = auto_global->auto_global_callback(auto_global->name); - } - return 1; - } - return 0; + return zend_auto_global_check(zend_hash_find_ptr(CG(auto_globals), name)); } /* }}} */ From 9e04be38fef8de2dace770b61c117626a397de19 Mon Sep 17 00:00:00 2001 From: Weilin Du Date: Fri, 31 Jul 2026 17:25:13 +0800 Subject: [PATCH 2/3] Zend: fix typo `backtreace` --- Zend/Optimizer/zend_inference.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index 2e6cc70ec254..3e5428d857bd 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -1958,7 +1958,7 @@ static uint32_t get_ssa_alias_types(zend_ssa_alias_kind alias) { zend_ssa_var *__ssa_var = &ssa_vars[__var]; \ if (__ssa_var->var < op_array->num_args) { \ if (__type & MAY_BE_RC1) { \ - /* TODO: may be captured by exception backtreace */ \ + /* TODO: may be captured by exception backtrace */ \ __type |= MAY_BE_RCN; \ } \ } \ From 8980a0fa3a3ad1e3b6a731cf50e2c935841388a0 Mon Sep 17 00:00:00 2001 From: Weilin Du Date: Fri, 31 Jul 2026 23:07:28 +0800 Subject: [PATCH 3/3] [skip ci] Revert typo change --- Zend/Optimizer/zend_inference.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index 3e5428d857bd..2e6cc70ec254 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -1958,7 +1958,7 @@ static uint32_t get_ssa_alias_types(zend_ssa_alias_kind alias) { zend_ssa_var *__ssa_var = &ssa_vars[__var]; \ if (__ssa_var->var < op_array->num_args) { \ if (__type & MAY_BE_RC1) { \ - /* TODO: may be captured by exception backtrace */ \ + /* TODO: may be captured by exception backtreace */ \ __type |= MAY_BE_RCN; \ } \ } \