@@ -803,6 +803,9 @@ static bool zend_jit_may_be_modified(const zend_function *func, const zend_op_ar
803
803
# pragma clang diagnostic ignored "-Wstring-compare"
804
804
#endif
805
805
806
+ static bool zend_jit_inc_call_level (uint8_t opcode );
807
+ static bool zend_jit_dec_call_level (uint8_t opcode );
808
+
806
809
#include "jit/zend_jit_ir.c"
807
810
808
811
#if defined(__clang__ )
@@ -1609,6 +1612,18 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
1609
1612
call_level ++ ;
1610
1613
}
1611
1614
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
+
1612
1627
if (JIT_G (opt_level ) >= ZEND_JIT_LEVEL_INLINE ) {
1613
1628
switch (opline -> opcode ) {
1614
1629
case ZEND_PRE_INC :
@@ -1676,10 +1691,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
1676
1691
&& zend_jit_next_is_send_result (opline )) {
1677
1692
i ++ ;
1678
1693
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 );
1683
1695
} else {
1684
1696
res_use_info = -1 ;
1685
1697
@@ -1730,10 +1742,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
1730
1742
&& zend_jit_next_is_send_result (opline )) {
1731
1743
i ++ ;
1732
1744
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 );
1737
1746
} else {
1738
1747
res_use_info = -1 ;
1739
1748
@@ -1786,10 +1795,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
1786
1795
if ((i + 1 ) <= end
1787
1796
&& zend_jit_next_is_send_result (opline )) {
1788
1797
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 );
1793
1799
}
1794
1800
if (!zend_jit_concat (& ctx , opline ,
1795
1801
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
2040
2046
&& zend_jit_next_is_send_result (opline )
2041
2047
&& (!(op1_info & MAY_HAVE_DTOR ) || !(op1_info & MAY_BE_RC1 ))) {
2042
2048
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 );
2047
2050
}
2048
2051
}
2049
2052
if (!zend_jit_assign (& ctx , opline ,
0 commit comments