]> granicus.if.org Git - php/commitdiff
Remove no longer applicable optimization
authorNikita Popov <nikic@php.net>
Sat, 14 Nov 2015 10:23:31 +0000 (11:23 +0100)
committerNikita Popov <nikic@php.net>
Sat, 14 Nov 2015 10:23:31 +0000 (11:23 +0100)
PHP 7 generates CVs inside silenced blocks.

ext/opcache/Optimizer/pass1_5.c

index ca1cf45539a293ae79ee3cdcc5d697e6f930bc64..abdc490c0a0a9e08a0946861f7171a1d78e3f9f3 100644 (file)
@@ -645,68 +645,6 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx)
                case ZEND_ASSERT_CHECK:
                        collect_constants = 0;
                        break;
-               case ZEND_FETCH_R:
-               case ZEND_FETCH_W:
-               case ZEND_FETCH_RW:
-               case ZEND_FETCH_FUNC_ARG:
-               case ZEND_FETCH_IS:
-               case ZEND_FETCH_UNSET:
-                       if (opline != op_array->opcodes &&
-                           (opline-1)->opcode == ZEND_BEGIN_SILENCE &&
-                           (opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_LOCAL &&
-                               opline->op1_type == IS_CONST &&
-                           opline->op2_type == IS_UNUSED &&
-                           Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING &&
-                           (Z_STRLEN(ZEND_OP1_LITERAL(opline)) != sizeof("this")-1 ||
-                            memcmp(Z_STRVAL(ZEND_OP1_LITERAL(opline)), "this", sizeof("this") - 1) != 0)) {
-
-                           int var = opline->result.var;
-                           int level = 0;
-                               zend_op *op = opline + 1;
-                               zend_op *use = NULL;
-
-                               while (op < end) {
-                                       if (op->opcode == ZEND_BEGIN_SILENCE) {
-                                               level++;
-                                       } else if (op->opcode == ZEND_END_SILENCE) {
-                                               if (level == 0) {
-                                                       break;
-                                               } else {
-                                                       level--;
-                                               }
-                                       }
-                                       if (op->op1_type == IS_VAR && op->op1.var == var) {
-                                               if (use) {
-                                                       /* used more than once */
-                                                       use = NULL;
-                                                       break;
-                                               }
-                                               use = op;
-                                       } else if (op->op2_type == IS_VAR && op->op2.var == var) {
-                                               if (use) {
-                                                       /* used more than once */
-                                                       use = NULL;
-                                                       break;
-                                               }
-                                               use = op;
-                                       }
-                                       op++;
-                               }
-                               if (use) {
-                                       if (use->op1_type == IS_VAR && use->op1.var == var) {
-                                               use->op1_type = IS_CV;
-                                               use->op1.var = zend_optimizer_lookup_cv(op_array,
-                                                       Z_STR(ZEND_OP1_LITERAL(opline)));
-                                               MAKE_NOP(opline);
-                                       } else if (use->op2_type == IS_VAR && use->op2.var == var) {
-                                               use->op2_type = IS_CV;
-                                               use->op2.var = zend_optimizer_lookup_cv(op_array,
-                                                       Z_STR(ZEND_OP1_LITERAL(opline)));
-                                               MAKE_NOP(opline);
-                                       }
-                               }
-                       }
-                       break;
                }
                opline++;
                i++;