@@ -803,6 +803,9 @@ static bool zend_jit_may_be_modified(const zend_function *func, const zend_op_ar
803803# pragma clang diagnostic ignored "-Wstring-compare"
804804#endif
805805
806+ static bool zend_jit_inc_call_level (uint8_t opcode );
807+ static bool zend_jit_dec_call_level (uint8_t opcode );
808+
806809#include "jit/zend_jit_ir.c"
807810
808811#if defined(__clang__ )
@@ -1609,6 +1612,18 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
16091612 call_level ++ ;
16101613 }
16111614
1615+ #if ZEND_DEBUG && 0
1616+ {
1617+ const void * handler ;
1618+ if (zend_jit_vm_kind == ZEND_VM_KIND_HYBRID ) {
1619+ handler = zend_get_opcode_handler_func (opline );
1620+ } else {
1621+ handler = opline -> handler ;
1622+ }
1623+ ir_RSTORE (8 , jit_CONST_FUNC (& ctx , (uintptr_t )handler , IR_FASTCALL_FUNC ));
1624+ }
1625+ #endif
1626+
16121627 if (JIT_G (opt_level ) >= ZEND_JIT_LEVEL_INLINE ) {
16131628 switch (opline -> opcode ) {
16141629 case ZEND_PRE_INC :
@@ -1676,10 +1691,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
16761691 && zend_jit_next_is_send_result (opline )) {
16771692 i ++ ;
16781693 res_use_info = -1 ;
1679- res_addr = ZEND_ADDR_MEM_ZVAL (ZREG_RX , (opline + 1 )-> result .var );
1680- if (!zend_jit_reuse_ip (& ctx )) {
1681- goto jit_failure ;
1682- }
1694+ res_addr = ZEND_ADDR_ARG (jit_EX_CALL (jit ), (opline + 1 )-> result .var );
16831695 } else {
16841696 res_use_info = -1 ;
16851697
@@ -1730,10 +1742,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
17301742 && zend_jit_next_is_send_result (opline )) {
17311743 i ++ ;
17321744 res_use_info = -1 ;
1733- res_addr = ZEND_ADDR_MEM_ZVAL (ZREG_RX , (opline + 1 )-> result .var );
1734- if (!zend_jit_reuse_ip (& ctx )) {
1735- goto jit_failure ;
1736- }
1745+ res_addr = ZEND_ADDR_ARG (jit_EX_CALL (jit ), (opline + 1 )-> result .var );
17371746 } else {
17381747 res_use_info = -1 ;
17391748
@@ -1786,10 +1795,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
17861795 if ((i + 1 ) <= end
17871796 && zend_jit_next_is_send_result (opline )) {
17881797 i ++ ;
1789- res_addr = ZEND_ADDR_MEM_ZVAL (ZREG_RX , (opline + 1 )-> result .var );
1790- if (!zend_jit_reuse_ip (& ctx )) {
1791- goto jit_failure ;
1792- }
1798+ res_addr = ZEND_ADDR_ARG (jit_EX_CALL (jit ), (opline + 1 )-> result .var );
17931799 }
17941800 if (!zend_jit_concat (& ctx , opline ,
17951801 op1_info , op2_info , res_addr ,
@@ -2040,10 +2046,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
20402046 && zend_jit_next_is_send_result (opline )
20412047 && (!(op1_info & MAY_HAVE_DTOR ) || !(op1_info & MAY_BE_RC1 ))) {
20422048 i ++ ;
2043- res_addr = ZEND_ADDR_MEM_ZVAL (ZREG_RX , (opline + 1 )-> result .var );
2044- if (!zend_jit_reuse_ip (& ctx )) {
2045- goto jit_failure ;
2046- }
2049+ res_addr = ZEND_ADDR_ARG (jit_EX_CALL (jit ), (opline + 1 )-> result .var );
20472050 }
20482051 }
20492052 if (!zend_jit_assign (& ctx , opline ,
0 commit comments