[php-src] master: Use ZEND_OPCACHE_SHM_REATTACHMENT more commonly (#24085)

From: Date: Sat, 10 Oct 2026 10:24:33 +0000
Subject: [php-src] master: Use ZEND_OPCACHE_SHM_REATTACHMENT more commonly (#24085)
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-142154@lists.php.net to get a copy of this message
Author: Nora Dossche (ndossche) Committer: GitHub (web-flow) Pusher: ndossche Date: 2026-10-10T12:24:29+02:00 Commit: https://github.com/php/php-src/commit/3070be2b527d1065180f871018188aa5474e3c82 Raw diff: https://github.com/php/php-src/commit/3070be2b527d1065180f871018188aa5474e3c82.diff Use ZEND_OPCACHE_SHM_REATTACHMENT more commonly (#24085) Changed paths: M Zend/Optimizer/zend_optimizer.c M Zend/zend_inheritance.c M ext/opcache/jit/zend_jit.c M ext/opcache/jit/zend_jit_ir.c Diff: diff --git a/Zend/Optimizer/zend_optimizer.c b/Zend/Optimizer/zend_optimizer.c index 6d5b5f541a90..db5cd03a4e44 100644 --- a/Zend/Optimizer/zend_optimizer.c +++ b/Zend/Optimizer/zend_optimizer.c @@ -108,7 +108,7 @@ zend_result zend_optimizer_eval_special_func_call( if (func && func->type == ZEND_INTERNAL_FUNCTION && func->module->type == MODULE_PERSISTENT -#ifdef ZEND_WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT && func->module->handle == NULL #endif ) { @@ -129,7 +129,7 @@ zend_result zend_optimizer_eval_special_func_call( } if (m->type == MODULE_PERSISTENT -#ifdef ZEND_WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT && m->handle == NULL #endif ) { diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index 22787d6af302..375acc45d6a9 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -390,8 +390,8 @@ static void track_class_dependency(zend_class_entry *ce, zend_string *class_name return; } -#ifndef ZEND_WIN32 - /* On non-Windows systems, internal classes are always the same, +#ifndef ZEND_OPCACHE_SHM_REATTACHMENT + /* On systems without reattachment, internal classes are always the same, * so there is no need to explicitly track them. */ if (ce->type == ZEND_INTERNAL_CLASS) { return; @@ -3619,7 +3619,7 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string } } -#ifndef ZEND_WIN32 +#ifndef ZEND_OPCACHE_SHM_REATTACHMENT if (ce->ce_flags & ZEND_ACC_ENUM) { /* We will add internal methods. */ is_cacheable = false; diff --git a/ext/opcache/jit/zend_jit.c b/ext/opcache/jit/zend_jit.c index 80d3287a4204..e5d26096984b 100644 --- a/ext/opcache/jit/zend_jit.c +++ b/ext/opcache/jit/zend_jit.c @@ -709,7 +709,7 @@ static bool zend_jit_class_may_be_modified(const zend_class_entry *ce, const zen uint32_t i; if (ce->type == ZEND_INTERNAL_CLASS) { -#ifdef _WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT /* ASLR */ return 1; #else @@ -757,7 +757,7 @@ static bool zend_jit_class_may_be_modified(const zend_class_entry *ce, const zen static bool zend_jit_may_be_modified(const zend_function *func, const zend_op_array *called_from) { if (func->type == ZEND_INTERNAL_FUNCTION) { -#ifdef _WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT /* ASLR */ return 1; #else diff --git a/ext/opcache/jit/zend_jit_ir.c b/ext/opcache/jit/zend_jit_ir.c index c0cc673d25dc..eec5434cde74 100644 --- a/ext/opcache/jit/zend_jit_ir.c +++ b/ext/opcache/jit/zend_jit_ir.c @@ -8555,7 +8555,7 @@ static int zend_jit_push_call_frame(zend_jit_ctx *jit, const zend_op *opline, co if_enough_stack = ir_IF(ref); ir_IF_FALSE_cold(if_enough_stack); -#ifdef _WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT if (0) { #else if (opline->opcode == ZEND_INIT_FCALL && func && func->type == ZEND_INTERNAL_FUNCTION) { @@ -8604,7 +8604,7 @@ static int zend_jit_push_call_frame(zend_jit_ctx *jit, const zend_op *opline, co // JIT: ZEND_SET_CALL_INFO(call, 0, call_info); ir_STORE(jit_CALL(rx, This.u1.type_info), ir_CONST_U32(IS_UNDEF | ZEND_CALL_NESTED_FUNCTION)); } -#ifdef _WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT if (0) { #else if (opline->opcode == ZEND_INIT_FCALL && func && func->type == ZEND_INTERNAL_FUNCTION) { @@ -8741,7 +8741,7 @@ static int zend_jit_func_guard(zend_jit_ctx *jit, ir_ref func_ref, const zend_fu ir_LOAD_A(ir_ADD_OFFSET(func_ref, offsetof(zend_op_array, opcodes))), ir_CONST_ADDR(opcodes)), ir_CONST_ADDR(exit_addr)); -#ifdef ZEND_WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT } else if (func->type == ZEND_INTERNAL_FUNCTION) { // ASLR may cause different addresses in different workers. Check for the internal function handler. // JIT: if (call->func.internal_function.handler != handler) goto exit_addr; @@ -8814,7 +8814,7 @@ static int zend_jit_init_fcall(zend_jit_ctx *jit, const zend_op *opline, uint32_ if (!func && trace && trace->op == ZEND_JIT_TRACE_INIT_CALL) { -#ifdef _WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT /* ASLR */ if (trace->func->type != ZEND_INTERNAL_FUNCTION) { func = (zend_function*)trace->func; @@ -8824,7 +8824,7 @@ static int zend_jit_init_fcall(zend_jit_ctx *jit, const zend_op *opline, uint32_ #endif } -#ifdef _WIN32 +#ifdef ZEND_OPCACHE_SHM_REATTACHMENT if (0) { #else if (opline->opcode == ZEND_INIT_FCALL @@ -10065,7 +10065,7 @@ static int zend_jit_do_fcall(zend_jit_ctx *jit, const zend_op *opline, const zen if (trace && !func) { if (trace->op == ZEND_JIT_TRACE_DO_ICALL) { ZEND_ASSERT(!trace->func || trace->func->type == ZEND_INTERNAL_FUNCTION); -#ifndef ZEND_WIN32 +#ifndef ZEND_OPCACHE_SHM_REATTACHMENT // TODO: ASLR may cause different addresses in different workers ??? func = trace->func; if (JIT_G(current_frame) &&

« previous php.cvs (#142154) next »