minor fixes

This commit is contained in:
Dmitry Stogov 2015-11-18 23:03:20 +03:00
parent 366ba41334
commit df63ec564e
2 changed files with 11 additions and 7 deletions

View 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 */

View 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;
}