Skip to content

Commit 59401aa

Browse files
committed
Remove redundand IS_INDIRECT checks (they were necessary for $GLOBALS handling)
1 parent e497a9f commit 59401aa

File tree

1 file changed

+14
-46
lines changed

1 file changed

+14
-46
lines changed

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 14 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5572,10 +5572,6 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
55725572
} else {
55735573
| jz >9 // NOT_FOUND
55745574
}
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:
55795575
break;
55805576
case BP_VAR_R:
55815577
case BP_VAR_IS:
@@ -5602,40 +5598,25 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
56025598
| jz >7 // NOT_FOUND
56035599
} else {
56045600
| 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 &not_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:
56225605
// zend_error(E_WARNING, "Undefined array key \"%s\"", ZSTR_VAL(offset_key));
56235606
| UNDEFINED_INDEX opline
56245607
| 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:
56305611
| // retval = &EG(uninitialized_zval);
56315612
| SET_ZVAL_TYPE_INFO res_addr, IS_NULL
56325613
| jmp >9
5633-
}
5634-
break;
5635-
default:
5636-
ZEND_UNREACHABLE();
5614+
break;
5615+
default:
5616+
ZEND_UNREACHABLE();
5617+
}
5618+
|.code
56375619
}
5638-
|.code
56395620
break;
56405621
case BP_VAR_RW:
56415622
| 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
1487214853
| add FCARG1d, 1
1487314854
| // value_type = Z_TYPE_INFO_P(value);
1487414855
| // if (EXPECTED(value_type != IS_UNDEF)) {
14875-
| IF_Z_TYPE r0, IS_UNDEF, >2
1487614856
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
1488714858
} else {
1488814859
| IF_NOT_Z_TYPE r0, IS_UNDEF, &exit_addr
1488914860
}
14890-
| GET_ZVAL_PTR FCARG2a, op1_addr // reload
14891-
|2:
1489214861
| // p++;
1489314862
| add r0, sizeof(Bucket)
1489414863
| jmp <1
@@ -14899,8 +14868,7 @@ static int zend_jit_fe_fetch(dasm_State **Dst, const zend_op *opline, uint32_t o
1489914868
zend_jit_addr var_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->op2.var);
1490014869
uint32_t val_info;
1490114870

14902-
| mov FCARG2a, r0
14903-
|4:
14871+
| mov FCARG2a, r0
1490414872
| // Z_FE_POS_P(array) = pos + 1;
1490514873
| mov dword [FP + opline->op1.var + offsetof(zval, u2.fe_pos)], FCARG1d
1490614874

0 commit comments

Comments
 (0)