]> granicus.if.org Git - php/commitdiff
Cleanup OP_DATA usage. Now only first operand of OP_DATA is used for ASSIGN_DIM,...
authorDmitry Stogov <dmitry@zend.com>
Tue, 9 Feb 2016 10:12:57 +0000 (13:12 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 9 Feb 2016 10:12:57 +0000 (13:12 +0300)
ext/opcache/Optimizer/optimize_temp_vars_5.c
ext/opcache/Optimizer/zend_inference.c
ext/opcache/Optimizer/zend_optimizer.c
ext/opcache/Optimizer/zend_ssa.c

index 31a825e0b952a66139a6a0676f0c5908fb194d5a..108bdda6d7bd581c975755ffb9ee9f9d93f3d597 100644 (file)
@@ -139,13 +139,6 @@ void zend_optimize_temporary_variables(zend_op_array *op_array, zend_optimizer_c
                        }
                }
 
-               /* Skip OP_DATA */
-               if (opline->opcode == ZEND_OP_DATA &&
-                   (opline-1)->opcode == ZEND_ASSIGN_DIM) {
-                   opline--;
-                   continue;
-               }
-
                if ((ZEND_OP2_TYPE(opline) & (IS_VAR | IS_TMP_VAR))) {
                        currT = VAR_NUM(ZEND_OP2(opline).var) - offset;
                        if (!zend_bitset_in(valid_T, currT)) {
@@ -156,19 +149,6 @@ void zend_optimize_temporary_variables(zend_op_array *op_array, zend_optimizer_c
                        ZEND_OP2(opline).var = NUM_VAR(map_T[currT] + offset);
                }
 
-               /* Allocate OP_DATA->op2 after "operands", but before "result" */
-               if (opline->opcode == ZEND_ASSIGN_DIM &&
-                   (opline + 1)->opcode == ZEND_OP_DATA &&
-                   ZEND_OP2_TYPE(opline + 1) & (IS_VAR | IS_TMP_VAR)) {
-                       currT = VAR_NUM(ZEND_OP2(opline + 1).var) - offset;
-                       GET_AVAILABLE_T();
-                       map_T[currT] = i;
-                       zend_bitset_incl(valid_T, currT);
-                       zend_bitset_excl(taken_T, i);
-                       ZEND_OP2(opline + 1).var = NUM_VAR(i + offset);
-                       var_to_free = i;
-               }
-
                if (ZEND_RESULT_TYPE(opline) & (IS_VAR | IS_TMP_VAR)) {
                        currT = VAR_NUM(ZEND_RESULT(opline).var) - offset;
                        if (zend_bitset_in(valid_T, currT)) {
index 2dab5aa9548d4355fd301728307f4443b2b81d48..affdaf7aac24b3b90fea4d575d1beac5300c4a3d 100644 (file)
@@ -2204,23 +2204,7 @@ static void zend_update_type_info(const zend_op_array *op_array,
        zend_class_entry *ce;
        int j;
 
-       if (opline->opcode == ZEND_OP_DATA &&
-           ((opline-1)->opcode == ZEND_ASSIGN_DIM ||
-            (opline-1)->opcode == ZEND_ASSIGN_OBJ ||
-            (opline-1)->opcode == ZEND_ASSIGN_ADD ||
-            (opline-1)->opcode == ZEND_ASSIGN_SUB ||
-            (opline-1)->opcode == ZEND_ASSIGN_MUL ||
-            (opline-1)->opcode == ZEND_ASSIGN_DIV ||
-            (opline-1)->opcode == ZEND_ASSIGN_MOD ||
-            (opline-1)->opcode == ZEND_ASSIGN_SL ||
-            (opline-1)->opcode == ZEND_ASSIGN_SR ||
-            (opline-1)->opcode == ZEND_ASSIGN_CONCAT ||
-            (opline-1)->opcode == ZEND_ASSIGN_BW_OR ||
-            (opline-1)->opcode == ZEND_ASSIGN_BW_AND ||
-            (opline-1)->opcode == ZEND_ASSIGN_BW_XOR ||
-            (opline-1)->opcode == ZEND_ASSIGN_POW ||
-            (opline-1)->opcode == ZEND_FE_FETCH_R ||
-            (opline-1)->opcode == ZEND_FE_FETCH_RW)) {
+       if (opline->opcode == ZEND_OP_DATA) {
                opline--;
                i--;
        }
index 47c76207a32e9755050790b2352eb6c8f6e221d3..e2a12de108bea498740a3a7f44005e667420639a 100644 (file)
@@ -307,26 +307,6 @@ int zend_optimizer_update_op2_const(zend_op_array *op_array,
                                opline->op2.constant = zend_optimizer_add_literal(op_array, val);
                        }
                        break;
-               case ZEND_OP_DATA:
-                       if ((opline-1)->opcode != ZEND_ASSIGN_DIM &&
-                               ((opline-1)->extended_value != ZEND_ASSIGN_DIM ||
-                                ((opline-1)->opcode != ZEND_ASSIGN_ADD &&
-                                (opline-1)->opcode != ZEND_ASSIGN_SUB &&
-                                (opline-1)->opcode != ZEND_ASSIGN_MUL &&
-                                (opline-1)->opcode != ZEND_ASSIGN_DIV &&
-                                (opline-1)->opcode != ZEND_ASSIGN_POW &&
-                                (opline-1)->opcode != ZEND_ASSIGN_MOD &&
-                                (opline-1)->opcode != ZEND_ASSIGN_SL &&
-                                (opline-1)->opcode != ZEND_ASSIGN_SR &&
-                                (opline-1)->opcode != ZEND_ASSIGN_CONCAT &&
-                                (opline-1)->opcode != ZEND_ASSIGN_BW_OR &&
-                                (opline-1)->opcode != ZEND_ASSIGN_BW_AND &&
-                                (opline-1)->opcode != ZEND_ASSIGN_BW_XOR))
-                       ) {
-                               opline->op2.constant = zend_optimizer_add_literal(op_array, val);
-                               break;
-                       }
-                       /* break missing intentionally */
                case ZEND_ISSET_ISEMPTY_DIM_OBJ:
                case ZEND_ADD_ARRAY_ELEMENT:
                case ZEND_INIT_ARRAY:
index 8ed6f4b3eb996d29bbc119263809c24055d9baff..08203ec0c7ee01973952d989b3611df94f56aafd 100644 (file)
@@ -498,29 +498,8 @@ static int zend_ssa_rename(const zend_op_array *op_array, uint32_t build_flags,
                                        //USE_SSA_VAR(next->op2.var);
                                } else if (next->op2_type == IS_VAR ||
                                           next->op2_type == IS_TMP_VAR) {
-                                       /* ZEND_ASSIGN_??? use the second operand
-                                          of the following OP_DATA instruction as
-                                          a temporary variable */
-                                       switch (opline->opcode) {
-                                               case ZEND_ASSIGN_DIM:
-                                               case ZEND_ASSIGN_OBJ:
-                                               case ZEND_ASSIGN_ADD:
-                                               case ZEND_ASSIGN_SUB:
-                                               case ZEND_ASSIGN_MUL:
-                                               case ZEND_ASSIGN_DIV:
-                                               case ZEND_ASSIGN_MOD:
-                                               case ZEND_ASSIGN_SL:
-                                               case ZEND_ASSIGN_SR:
-                                               case ZEND_ASSIGN_CONCAT:
-                                               case ZEND_ASSIGN_BW_OR:
-                                               case ZEND_ASSIGN_BW_AND:
-                                               case ZEND_ASSIGN_BW_XOR:
-                                               case ZEND_ASSIGN_POW:
-                                                       break;
-                                               default:
-                                                       ssa_ops[k + 1].op2_use = var[EX_VAR_TO_NUM(next->op2.var)];
-                                                       //USE_SSA_VAR(op_array->last_var + next->op2.var);
-                                       }
+                                       ssa_ops[k + 1].op2_use = var[EX_VAR_TO_NUM(next->op2.var)];
+                                       //USE_SSA_VAR(op_array->last_var + next->op2.var);
                                }
                        }
                        if (opline->op1_type & (IS_CV|IS_VAR|IS_TMP_VAR)) {