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