1
0
mirror of https://github.com/php/php-src.git synced 2026-04-05 07:02:33 +02:00

Merge branch 'PHP-5.5'

* PHP-5.5:
  Fixed issue #79 (Optimization Problem/Bug)
  fix coverage data for the opcache optimizer
This commit is contained in:
Dmitry Stogov
2013-04-01 11:34:37 +04:00
2 changed files with 46 additions and 0 deletions

View File

@@ -1312,6 +1312,12 @@ static void zend_jmp_optimization(zend_code_block *block, zend_op_array *op_arra
if (ZEND_OP1_TYPE(last_op) == IS_CONST) {
zval_copy_ctor(&ZEND_OP1_LITERAL(last_op));
}
#else
if (ZEND_OP1_TYPE(last_op) == IS_CONST) {
zval zv = ZEND_OP1_LITERAL(last_op);
zval_copy_ctor(&zv);
last_op->op1.constant = zend_optimizer_add_literal(op_array, &zv TSRMLS_CC);
}
#endif
del_source(block, block->op1_to);
if (block->op1_to->op2_to) {
@@ -1342,6 +1348,12 @@ static void zend_jmp_optimization(zend_code_block *block, zend_op_array *op_arra
if (ZEND_OP1_TYPE(last_op) == IS_CONST) {
zval_copy_ctor(&ZEND_OP1_LITERAL(last_op));
}
#else
if (ZEND_OP1_TYPE(last_op) == IS_CONST) {
zval zv = ZEND_OP1_LITERAL(last_op);
zval_copy_ctor(&zv);
last_op->op1.constant = zend_optimizer_add_literal(op_array, &zv TSRMLS_CC);
}
#endif
del_source(block, block->op1_to);
block->op1_to = NULL;

View File

@@ -0,0 +1,34 @@
--TEST--
ISSUE #79 (Optimization Problem/Bug)
--INI--
opcache.enable=1
opcache.enable_cli=1
opcache.optimization_level=-1
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
class Test {
public function run() {
$r = $this->my_parse_m();
var_dump ($r);
return $r;
}
public function my_parse_m() {
$test = true;
if ($test === true) {
$a = 'b';
} else {
return false;
}
// flush();
return true;
}
}
$t = new Test();
var_dump ($t->run());
--EXPECT--
bool(true)
bool(true)