]> granicus.if.org Git - php/commitdiff
Cleanup conditions
authorDmitry Stogov <dmitry@zend.com>
Tue, 26 Jun 2018 13:18:30 +0000 (16:18 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 26 Jun 2018 13:18:30 +0000 (16:18 +0300)
Zend/zend_compile.c
ext/opcache/Optimizer/zend_inference.c

index ac5dd26077348db2334c776ba3e875decc0a0c0a..310fac9cc973eb898e6fffbec2f80f12b4f12490 100644 (file)
@@ -723,15 +723,7 @@ void zend_do_free(znode *op1) /* {{{ */
                }
                if (opline->result_type == IS_VAR
                        && opline->result.var == op1->u.op.var) {
-                       if (opline->opcode == ZEND_FETCH_R ||
-                           opline->opcode == ZEND_FETCH_DIM_R ||
-                           opline->opcode == ZEND_FETCH_OBJ_R ||
-                           opline->opcode == ZEND_FETCH_STATIC_PROP_R) {
-                               /* It's very rare and useless case. It's better to use
-                                  additional FREE opcode and simplify the FETCH handlers
-                                  their selves */
-                               zend_emit_op(NULL, ZEND_FREE, op1, NULL);
-                       } else if (opline->opcode == ZEND_FETCH_THIS) {
+                       if (opline->opcode == ZEND_FETCH_THIS) {
                                opline->opcode = ZEND_NOP;
                                opline->result_type = IS_UNUSED;
                        } else {
index afab8b25ea6d9cd847e7d1be0e291b7659de416c..b6239d8c827982c8b34f51103919a690431845dd 100644 (file)
@@ -3290,8 +3290,7 @@ static int zend_update_type_info(const zend_op_array *op_array,
                        /* FETCH_LIST on a string behaves like FETCH_R on null */
                        tmp = zend_array_element_type(
                                opline->opcode != ZEND_FETCH_LIST_R ? t1 : ((t1 & ~MAY_BE_STRING) | MAY_BE_NULL),
-                               opline->opcode != ZEND_FETCH_DIM_R && opline->opcode != ZEND_FETCH_DIM_IS
-                                       && opline->opcode != ZEND_FETCH_LIST_R,
+                               opline->result_type == IS_VAR,
                                opline->op2_type == IS_UNUSED);
                        if (opline->opcode == ZEND_FETCH_DIM_W ||
                            opline->opcode == ZEND_FETCH_DIM_RW ||
@@ -3336,7 +3335,7 @@ static int zend_update_type_info(const zend_op_array *op_array,
                        }
                        if (ssa_ops[i].result_def >= 0) {
                                tmp = MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
-                               if (opline->opcode == ZEND_FETCH_OBJ_R || opline->opcode == ZEND_FETCH_OBJ_IS) {
+                               if (opline->result_type == IS_TMP_VAR) {
                                        /* can't be REF  because of ZVAL_COPY_DEREF() usage */
                                        tmp |= MAY_BE_RC1 | MAY_BE_RCN;
                                } else {
@@ -3442,14 +3441,6 @@ static int zend_update_type_info(const zend_op_array *op_array,
                        /* Forbidden opcodes */
                        ZEND_ASSERT(0);
                        break;
-               case ZEND_FETCH_R:
-               case ZEND_FETCH_IS:
-               case ZEND_FETCH_STATIC_PROP_R:
-               case ZEND_FETCH_STATIC_PROP_IS:
-                       /* can't be REF  because of ZVAL_COPY_DEREF() usage */
-                       tmp = MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
-                       UPDATE_SSA_TYPE(tmp, ssa_ops[i].result_def);
-                       break;
                default:
 unknown_opcode:
                        if (ssa_ops[i].op1_def >= 0) {