@@ -16646,24 +16646,19 @@ static bool zend_jit_may_be_in_reg(const zend_op_array *op_array, zend_ssa *ssa,
16646
16646
16647
16647
static void jit_frameless_icall0(zend_jit_ctx *jit, const zend_op *opline)
16648
16648
{
16649
- if (GCC_GLOBAL_REGS) {
16650
- // EX(opline) = opline
16651
- ir_STORE(jit_EX(opline), jit_IP(jit));
16652
- }
16649
+ jit_SET_EX_OPLINE(jit, opline);
16653
16650
16654
16651
void *function = zend_flf_handlers[opline->extended_value];
16655
16652
zend_jit_addr res_addr = RES_ADDR();
16656
16653
ir_ref res_ref = jit_ZVAL_ADDR(jit, res_addr);
16654
+ jit_set_Z_TYPE_INFO(jit, res_addr, IS_NULL);
16657
16655
ir_CALL_1(IR_VOID, ir_CONST_ADDR((size_t)function), res_ref);
16658
16656
zend_jit_check_exception(jit);
16659
16657
}
16660
16658
16661
16659
static void jit_frameless_icall1(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info)
16662
16660
{
16663
- if (GCC_GLOBAL_REGS) {
16664
- // EX(opline) = opline
16665
- ir_STORE(jit_EX(opline), jit_IP(jit));
16666
- }
16661
+ jit_SET_EX_OPLINE(jit, opline);
16667
16662
16668
16663
void *function = zend_flf_handlers[opline->extended_value];
16669
16664
zend_jit_addr res_addr = RES_ADDR();
@@ -16672,17 +16667,15 @@ static void jit_frameless_icall1(zend_jit_ctx *jit, const zend_op *opline, uint3
16672
16667
ir_ref op1_ref = jit_ZVAL_ADDR(jit, op1_addr);
16673
16668
zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
16674
16669
op1_ref = jit_ZVAL_DEREF_ref(jit, op1_ref);
16670
+ jit_set_Z_TYPE_INFO(jit, res_addr, IS_NULL);
16675
16671
ir_CALL_2(IR_VOID, ir_CONST_ADDR((size_t)function), res_ref, op1_ref);
16676
16672
jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, NULL);
16677
16673
zend_jit_check_exception(jit);
16678
16674
}
16679
16675
16680
16676
static void jit_frameless_icall2(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info, uint32_t op2_info)
16681
16677
{
16682
- if (GCC_GLOBAL_REGS) {
16683
- // EX(opline) = opline
16684
- ir_STORE(jit_EX(opline), jit_IP(jit));
16685
- }
16678
+ jit_SET_EX_OPLINE(jit, opline);
16686
16679
16687
16680
void *function = zend_flf_handlers[opline->extended_value];
16688
16681
zend_jit_addr res_addr = RES_ADDR();
@@ -16695,6 +16688,7 @@ static void jit_frameless_icall2(zend_jit_ctx *jit, const zend_op *opline, uint3
16695
16688
zend_jit_zval_check_undef(jit, op2_ref, opline->op2.var, opline, 1);
16696
16689
op1_ref = jit_ZVAL_DEREF_ref(jit, op1_ref);
16697
16690
op2_ref = jit_ZVAL_DEREF_ref(jit, op2_ref);
16691
+ jit_set_Z_TYPE_INFO(jit, res_addr, IS_NULL);
16698
16692
ir_CALL_3(IR_VOID, ir_CONST_ADDR((size_t)function), res_ref, op1_ref, op2_ref);
16699
16693
jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, NULL);
16700
16694
jit_FREE_OP(jit, opline->op2_type, opline->op2, op2_info, NULL);
@@ -16703,10 +16697,7 @@ static void jit_frameless_icall2(zend_jit_ctx *jit, const zend_op *opline, uint3
16703
16697
16704
16698
static void jit_frameless_icall3(zend_jit_ctx *jit, const zend_op *opline, uint32_t op1_info, uint32_t op2_info, uint32_t op1_data_info)
16705
16699
{
16706
- if (GCC_GLOBAL_REGS) {
16707
- // EX(opline) = opline
16708
- ir_STORE(jit_EX(opline), jit_IP(jit));
16709
- }
16700
+ jit_SET_EX_OPLINE(jit, opline);
16710
16701
16711
16702
void *function = zend_flf_handlers[opline->extended_value];
16712
16703
zend_jit_addr res_addr = RES_ADDR();
@@ -16723,6 +16714,7 @@ static void jit_frameless_icall3(zend_jit_ctx *jit, const zend_op *opline, uint3
16723
16714
op1_ref = jit_ZVAL_DEREF_ref(jit, op1_ref);
16724
16715
op2_ref = jit_ZVAL_DEREF_ref(jit, op2_ref);
16725
16716
op3_ref = jit_ZVAL_DEREF_ref(jit, op3_ref);
16717
+ jit_set_Z_TYPE_INFO(jit, res_addr, IS_NULL);
16726
16718
ir_CALL_4(IR_VOID, ir_CONST_ADDR((size_t)function), res_ref, op1_ref, op2_ref, op3_ref);
16727
16719
jit_FREE_OP(jit, opline->op1_type, opline->op1, op1_info, NULL);
16728
16720
jit_FREE_OP(jit, opline->op2_type, opline->op2, op2_info, NULL);
0 commit comments