diff options
Diffstat (limited to 'ext/opcache/Optimizer/zend_optimizer.c')
| -rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 07860f3998..ffc04854e2 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -566,14 +566,9 @@ void zend_optimizer_remove_live_range(zend_op_array *op_array, uint32_t var) if (op_array->last_live_range) { int i = 0; int j = 0; - uint32_t *map; - ALLOCA_FLAG(use_heap); - - map = (uint32_t *)do_alloca(sizeof(uint32_t) * op_array->last_live_range, use_heap); do { if ((op_array->live_range[i].var & ~ZEND_LIVE_MASK) != var) { - map[i] = j; if (i != j) { op_array->live_range[j] = op_array->live_range[i]; } @@ -582,23 +577,12 @@ void zend_optimizer_remove_live_range(zend_op_array *op_array, uint32_t var) i++; } while (i < op_array->last_live_range); if (i != j) { - if ((op_array->last_live_range = j)) { - zend_op *opline = op_array->opcodes; - zend_op *end = opline + op_array->last; - - while (opline != end) { - if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) && - opline->extended_value == ZEND_FREE_ON_RETURN) { - opline->op2.num = map[opline->op2.num]; - } - opline++; - } - } else { + op_array->last_live_range = j; + if (j == 0) { efree(op_array->live_range); op_array->live_range = NULL; } } - free_alloca(map, use_heap); } } |
