@@ -5572,10 +5572,6 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
5572
5572
} else {
5573
5573
| jz >9 // NOT_FOUND
5574
5574
}
5575
- | // if (UNEXPECTED(Z_TYPE_P(retval) == IS_INDIRECT))
5576
- | IF_NOT_Z_TYPE r0, IS_INDIRECT, >1
5577
- | GET_Z_PTR r0, r0
5578
- |1:
5579
5575
break;
5580
5576
case BP_VAR_R:
5581
5577
case BP_VAR_IS:
@@ -5602,40 +5598,25 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
5602
5598
| jz >7 // NOT_FOUND
5603
5599
} else {
5604
5600
| jz >2 // NOT_FOUND
5605
- }
5606
- | // if (UNEXPECTED(Z_TYPE_P(retval) == IS_INDIRECT))
5607
- | IF_Z_TYPE r0, IS_INDIRECT, >1 // SLOW
5608
- |.cold_code
5609
- |1:
5610
- | // retval = Z_INDIRECT_P(retval);
5611
- | GET_Z_PTR r0, r0
5612
- | IF_NOT_Z_TYPE r0, IS_UNDEF, >8
5613
- if (JIT_G(trigger) == ZEND_JIT_ON_HOT_TRACE && type == BP_VAR_R) {
5614
- | jmp &exit_addr
5615
- } else if (type == BP_VAR_IS && not_found_exit_addr) {
5616
- | jmp ¬_found_exit_addr
5617
- }
5618
- |2:
5619
- switch (type) {
5620
- case BP_VAR_R:
5621
- if (JIT_G(trigger) != ZEND_JIT_ON_HOT_TRACE) {
5601
+ |.cold_code
5602
+ |2:
5603
+ switch (type) {
5604
+ case BP_VAR_R:
5622
5605
// zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(offset_key));
5623
5606
| UNDEFINED_INDEX opline
5624
5607
| jmp >9
5625
- }
5626
- break;
5627
- case BP_VAR_IS:
5628
- case BP_VAR_UNSET:
5629
- if (!not_found_exit_addr && !found_exit_addr) {
5608
+ break;
5609
+ case BP_VAR_IS:
5610
+ case BP_VAR_UNSET:
5630
5611
| // retval = &EG(uninitialized_zval);
5631
5612
| SET_ZVAL_TYPE_INFO res_addr, IS_NULL
5632
5613
| jmp >9
5633
- }
5634
- break;
5635
- default:
5636
- ZEND_UNREACHABLE();
5614
+ break;
5615
+ default:
5616
+ ZEND_UNREACHABLE();
5617
+ }
5618
+ |.code
5637
5619
}
5638
- |.code
5639
5620
break;
5640
5621
case BP_VAR_RW:
5641
5622
| SET_EX_OPLINE opline, r0
@@ -14872,23 +14853,11 @@ static int zend_jit_fe_fetch(dasm_State **Dst, const zend_op *opline, uint32_t o
14872
14853
| add FCARG1d, 1
14873
14854
| // value_type = Z_TYPE_INFO_P(value);
14874
14855
| // if (EXPECTED(value_type != IS_UNDEF)) {
14875
- | IF_Z_TYPE r0, IS_UNDEF, >2
14876
14856
if (!exit_addr || exit_opcode == ZEND_JMP) {
14877
- | IF_NOT_Z_TYPE r0, IS_INDIRECT, >3
14878
- } else {
14879
- | IF_NOT_Z_TYPE r0, IS_INDIRECT, &exit_addr
14880
- }
14881
- | // value = Z_INDIRECT_P(value);
14882
- | GET_Z_PTR FCARG2a, r0
14883
- | // value_type = Z_TYPE_INFO_P(value);
14884
- | // if (EXPECTED(value_type != IS_UNDEF)) {
14885
- if (!exit_addr || exit_opcode == ZEND_JMP) {
14886
- | IF_NOT_Z_TYPE FCARG2a, IS_UNDEF, >4
14857
+ | IF_NOT_Z_TYPE r0, IS_UNDEF, >3
14887
14858
} else {
14888
14859
| IF_NOT_Z_TYPE r0, IS_UNDEF, &exit_addr
14889
14860
}
14890
- | GET_ZVAL_PTR FCARG2a, op1_addr // reload
14891
- |2:
14892
14861
| // p++;
14893
14862
| add r0, sizeof(Bucket)
14894
14863
| jmp <1
@@ -14899,8 +14868,7 @@ static int zend_jit_fe_fetch(dasm_State **Dst, const zend_op *opline, uint32_t o
14899
14868
zend_jit_addr var_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->op2.var);
14900
14869
uint32_t val_info;
14901
14870
14902
- | mov FCARG2a, r0
14903
- |4:
14871
+ | mov FCARG2a, r0
14904
14872
| // Z_FE_POS_P(array) = pos + 1;
14905
14873
| mov dword [FP + opline->op1.var + offsetof(zval, u2.fe_pos)], FCARG1d
14906
14874
0 commit comments