Skip to content

Commit 83c2d38

Browse files
committed
Add ZEND_FETCH_LIST_W to switches and places DIM_W exists
1 parent 8e34152 commit 83c2d38

File tree

5 files changed

+12
-2
lines changed

5 files changed

+12
-2
lines changed

ext/opcache/Optimizer/sccp.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ static zend_bool can_replace_op1(
220220
case ZEND_FETCH_OBJ_RW:
221221
case ZEND_FETCH_OBJ_UNSET:
222222
case ZEND_FETCH_OBJ_FUNC_ARG:
223+
case ZEND_FETCH_LIST_W:
223224
case ZEND_UNSET_DIM:
224225
case ZEND_UNSET_OBJ:
225226
case ZEND_SEND_REF:

ext/opcache/Optimizer/zend_dfg.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ int zend_build_dfg(const zend_op_array *op_array, const zend_cfg *cfg, zend_dfg
127127
case ZEND_FETCH_OBJ_RW:
128128
case ZEND_FETCH_OBJ_FUNC_ARG:
129129
case ZEND_FETCH_OBJ_UNSET:
130+
case ZEND_FETCH_LIST_W:
130131
case ZEND_VERIFY_RETURN_TYPE:
131132
case ZEND_PRE_INC_OBJ:
132133
case ZEND_PRE_DEC_OBJ:

ext/opcache/Optimizer/zend_inference.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2995,11 +2995,13 @@ static int zend_update_type_info(const zend_op_array *op_array,
29952995
case ZEND_FETCH_DIM_UNSET:
29962996
case ZEND_FETCH_DIM_FUNC_ARG:
29972997
case ZEND_FETCH_LIST_R:
2998+
case ZEND_FETCH_LIST_W:
29982999
if (ssa_ops[i].op1_def >= 0) {
29993000
tmp = t1 & ~(MAY_BE_RC1|MAY_BE_RCN);
30003001
if (opline->opcode == ZEND_FETCH_DIM_W ||
30013002
opline->opcode == ZEND_FETCH_DIM_RW ||
3002-
opline->opcode == ZEND_FETCH_DIM_FUNC_ARG) {
3003+
opline->opcode == ZEND_FETCH_DIM_FUNC_ARG ||
3004+
opline->opcode == ZEND_FETCH_LIST_W) {
30033005
if (t1 & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE)) {
30043006
if (opline->opcode != ZEND_FETCH_DIM_FUNC_ARG) {
30053007
tmp &= ~(MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE);
@@ -3046,6 +3048,7 @@ static int zend_update_type_info(const zend_op_array *op_array,
30463048
case ZEND_FETCH_DIM_W:
30473049
case ZEND_FETCH_DIM_RW:
30483050
case ZEND_FETCH_DIM_FUNC_ARG:
3051+
case ZEND_FETCH_LIST_W:
30493052
case ZEND_ASSIGN_ADD:
30503053
case ZEND_ASSIGN_SUB:
30513054
case ZEND_ASSIGN_MUL:
@@ -3116,7 +3119,8 @@ static int zend_update_type_info(const zend_op_array *op_array,
31163119
opline->op2_type == IS_UNUSED);
31173120
if (opline->opcode == ZEND_FETCH_DIM_W ||
31183121
opline->opcode == ZEND_FETCH_DIM_RW ||
3119-
opline->opcode == ZEND_FETCH_DIM_FUNC_ARG) {
3122+
opline->opcode == ZEND_FETCH_DIM_FUNC_ARG ||
3123+
opline->opcode == ZEND_FETCH_LIST_W) {
31203124
if (t1 & (MAY_BE_ERROR|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_RESOURCE|MAY_BE_OBJECT)) {
31213125
tmp |= MAY_BE_ERROR;
31223126
} else if (opline->op2_type == IS_UNUSED) {

ext/opcache/Optimizer/zend_optimizer.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
269269
case ZEND_FETCH_DIM_RW:
270270
case ZEND_FETCH_DIM_FUNC_ARG:
271271
case ZEND_FETCH_DIM_UNSET:
272+
case ZEND_FETCH_LIST_W:
272273
case ZEND_ASSIGN_DIM:
273274
case ZEND_RETURN_BY_REF:
274275
return 0;
@@ -451,6 +452,7 @@ int zend_optimizer_update_op2_const(zend_op_array *op_array,
451452
case ZEND_FETCH_DIM_FUNC_ARG:
452453
case ZEND_FETCH_DIM_UNSET:
453454
case ZEND_FETCH_LIST_R:
455+
case ZEND_FETCH_LIST_W:
454456
if (Z_TYPE_P(val) == IS_STRING) {
455457
zend_ulong index;
456458
if (ZEND_HANDLE_NUMERIC(Z_STR_P(val), index)) {
@@ -571,6 +573,7 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array,
571573
case ZEND_FETCH_DIM_RW:
572574
case ZEND_FETCH_DIM_FUNC_ARG:
573575
case ZEND_FETCH_DIM_UNSET:
576+
case ZEND_FETCH_LIST_W:
574577
case ZEND_ASSIGN_DIM:
575578
case ZEND_SEPARATE:
576579
case ZEND_RETURN_BY_REF:

ext/opcache/Optimizer/zend_ssa.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,7 @@ static int zend_ssa_rename(const zend_op_array *op_array, uint32_t build_flags,
739739
case ZEND_FETCH_OBJ_RW:
740740
case ZEND_FETCH_OBJ_FUNC_ARG:
741741
case ZEND_FETCH_OBJ_UNSET:
742+
case ZEND_FETCH_LIST_W:
742743
if (opline->op1_type == IS_CV) {
743744
ssa_ops[k].op1_def = ssa_vars_count;
744745
var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count;

0 commit comments

Comments
 (0)