Commit 166d2868f7b for php
commit 166d2868f7b5a8485864e55b93bfe5678e017782
Merge: 5663382c50a cfe77b82a65
Author: ndossche <7771979+ndossche@users.noreply.github.com>
Date: Thu Oct 22 10:47:25 2026 +0200
Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
JIT: Fix function JIT level 1 crash on FETCH_OBJ_FUNC_ARG of a hooked property
diff --cc ext/opcache/jit/zend_jit_ir.c
index c41447de2fb,830dbdf3272..939f597143f
--- a/ext/opcache/jit/zend_jit_ir.c
+++ b/ext/opcache/jit/zend_jit_ir.c
@@@ -17178,21 -16921,8 +17178,22 @@@ static int zend_jit_trace_handler(zend_
if (GCC_GLOBAL_REGS) {
ir_CALL(IR_VOID, ir_CONST_FUNC(handler));
} else {
- ref = jit_FP(jit);
- ref = ir_CALL_1(IR_I32, ir_CONST_FC_FUNC(handler), ref);
+ ref = ir_CALL_2(IR_ADDR, ir_CONST_FC_FUNC(handler), jit_FP(jit), jit_IP(jit));
+ if (opline->opcode == ZEND_RETURN ||
+ opline->opcode == ZEND_RETURN_BY_REF ||
+ opline->opcode == ZEND_DO_UCALL ||
+ opline->opcode == ZEND_DO_FCALL_BY_NAME ||
+ opline->opcode == ZEND_DO_FCALL ||
+ opline->opcode == ZEND_GENERATOR_CREATE ||
+ opline->opcode == ZEND_INCLUDE_OR_EVAL ||
+ /* May enter a simple get hook. */
- opline->opcode == ZEND_FETCH_OBJ_R) {
++ opline->opcode == ZEND_FETCH_OBJ_R ||
++ opline->opcode == ZEND_FETCH_OBJ_FUNC_ARG) {
+
+ jit_STORE_IP(jit, ir_AND_A(ref, ir_CONST_ADDR(~ZEND_VM_ENTER_BIT)));
+ } else {
+ jit_STORE_IP(jit, ref);
+ }
}
if (may_throw
&& opline->opcode != ZEND_RETURN
@@@ -17212,10 -16941,7 +17213,11 @@@
opline->opcode == ZEND_DO_UCALL ||
opline->opcode == ZEND_DO_FCALL_BY_NAME ||
opline->opcode == ZEND_DO_FCALL ||
- opline->opcode == ZEND_GENERATOR_CREATE) {
+ opline->opcode == ZEND_GENERATOR_CREATE ||
+ opline->opcode == ZEND_INCLUDE_OR_EVAL ||
+ /* May enter a simple get hook. */
- opline->opcode == ZEND_FETCH_OBJ_R) {
++ opline->opcode == ZEND_FETCH_OBJ_R ||
++ opline->opcode == ZEND_FETCH_OBJ_FUNC_ARG) {
ir_ref addr = jit_EG(current_execute_data);