]> granicus.if.org Git - php/commitdiff
minor fixes
authorDmitry Stogov <dmitry@zend.com>
Wed, 18 Nov 2015 20:03:20 +0000 (23:03 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 18 Nov 2015 20:03:20 +0000 (23:03 +0300)
ext/opcache/Optimizer/block_pass.c
ext/opcache/Optimizer/nop_removal.c

index c3508267efb4b644ee601865202afab912132d5f..6de5dc638a763c7a91586595bf8ada70fd0601a3 100644 (file)
@@ -166,7 +166,7 @@ static void zend_dump_op(const zend_op_array *op_array, const zend_code_block *b
        fprintf(stderr, "\n");
 }
 
-static void zend_dump_op_array(const zend_op_array *op_array, const zend_cfg *cfg)
+static void zend_dump_op_array(const zend_op_array *op_array, const zend_cfg *cfg, int all)
 {
        int i;
 
@@ -174,7 +174,7 @@ static void zend_dump_op_array(const zend_op_array *op_array, const zend_cfg *cf
                zend_code_block *block;
 
                for (block = cfg->blocks; block; block = block->next) {
-                       if (block->access) {
+                       if (all || block->access) {
                                const zend_op *opline = block->start_opline;
                                const zend_op *end = opline + block->len;
                                int printed = 0;
@@ -514,7 +514,7 @@ static int find_code_blocks(zend_op_array *op_array, zend_cfg *cfg, zend_optimiz
                }
        }
        cur_block->len = end - cur_block->start_opline;
-       cur_block->next = &blocks[op_array->last + 1];
+       cur_block->next = NULL;
        print_block(cur_block, op_array->opcodes, "");
 
        return 1;
@@ -2107,7 +2107,7 @@ static void zend_t_usage(zend_cfg *cfg, zend_op_array *op_array, zend_bitset use
                }
                if (printed) {
                        fprintf(stderr, "\n");
-                       zend_dump_op_array(op_array, cfg);
+                       zend_dump_op_array(op_array, cfg, 0);
                }
        }
 #endif
@@ -2249,7 +2249,7 @@ void optimize_cfg(zend_op_array *op_array, zend_optimizer_ctx *ctx)
 
 #if DEBUG_BLOCKPASS
        fprintf(stderr, "\nBEFORE-BLOCK-PASS: %s:\n", op_array->function_name ? op_array->function_name->val : "(null)");
-       zend_dump_op_array(op_array, &cfg);
+       zend_dump_op_array(op_array, &cfg, 1);
 #endif
 
        if (op_array->last_var || op_array->T) {
@@ -2294,7 +2294,7 @@ void optimize_cfg(zend_op_array *op_array, zend_optimizer_ctx *ctx)
 
 #if DEBUG_BLOCKPASS
        fprintf(stderr, "\nAFTER-BLOCK-PASS: %s:\n", op_array->function_name ? op_array->function_name->val : "(null)");
-       zend_dump_op_array(op_array, &cfg);
+       zend_dump_op_array(op_array, &cfg, 0);
 #endif
 
        /* Destroy CFG */
index 52967d16fd14177d9b0ea3c3653655313d492626..4f6983c79511277dfa8224393dd7f895d73f0317 100644 (file)
@@ -88,9 +88,13 @@ void zend_optimizer_nop_removal(zend_op_array *op_array)
                                        case ZEND_ASSERT_CHECK:
                                                ZEND_SET_OP_JMP_ADDR(new_opline, new_opline->op2, ZEND_OP2_JMP_ADDR(opline));
                                                break;
+                                       case ZEND_CATCH:
+                                               if (!opline->result.num) {
+                                                       new_opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value));
+                                               }
+                                               break;
                                        case ZEND_FE_FETCH_R:
                                        case ZEND_FE_FETCH_RW:
-                                       case ZEND_CATCH:
                                                new_opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value));
                                                break;
                                }