com php-src: Fixed another assertion fails due to live_range cleaned (ext/phar/tests/003a.phpt): ext/op cache/Optimizer/block_pass.c
| From: | Xinchen Hui | Date: | Mon, 15 Feb 2016 06:38:20 +0000 |
| Subject: | com php-src: Fixed another assertion fails due to live_range cleaned (ext/phar/tests/003a.phpt): ext/op cache/Optimizer/block_pass.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-91046@lists.php.net to get a copy of this message | ||
Commit: ab5869400ba5fda3d9718d63f925a513878f0abd
Author: Xinchen Hui <laruence@gmail.com> Mon, 15 Feb 2016 14:38:20 +0800
Parents: bddcabed84f8368397c213db09b0a56a7d586bff
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ab5869400ba5fda3d9718d63f925a513878f0abd
Log:
Fixed another assertion fails due to live_range cleaned (ext/phar/tests/003a.phpt)
Changed paths:
M ext/opcache/Optimizer/block_pass.c
Diff:
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c
index 14bf84e..df99eb5 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/ext/opcache/Optimizer/block_pass.c
@@ -954,17 +954,20 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array)
}
if (i != j) {
- zend_op *opline = new_opcodes;
- zend_op *end = opline + len;
-
- op_array->last_live_range = j;
- while (opline != end) {
- if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) &&
- opline->extended_value == ZEND_FREE_ON_RETURN) {
- ZEND_ASSERT(opline->op2.num < (uint32_t) i);
- opline->op2.num = map[opline->op2.num];
+ if ((op_array->last_live_range = j)) {
+ zend_op *opline = new_opcodes;
+ zend_op *end = opline + len;
+ while (opline != end) {
+ if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) &&
+ opline->extended_value == ZEND_FREE_ON_RETURN) {
+ ZEND_ASSERT(opline->op2.num < (uint32_t) i);
+ opline->op2.num = map[opline->op2.num];
+ }
+ opline++;
}
- opline++;
+ } else {
+ efree(op_array->live_range);
+ op_array->live_range = NULL;
}
}
free_alloca(map, use_heap);