summaryrefslogtreecommitdiff
path: root/ext/opcache/Optimizer/block_pass.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2013-04-01 11:33:04 +0400
committerDmitry Stogov <dmitry@zend.com>2013-04-01 11:33:04 +0400
commit74f158fb9dd198b1064e8f2064e264ec55d5bec7 (patch)
treee0add6bf8dccc2d4ac0eaec36e29f0e312c2b667 /ext/opcache/Optimizer/block_pass.c
parent586dc07a8a3ea0a1769dc83189a3d2d9a6b77b4a (diff)
downloadphp-git-74f158fb9dd198b1064e8f2064e264ec55d5bec7.tar.gz
Fixed issue #79 (Optimization Problem/Bug)
Diffstat (limited to 'ext/opcache/Optimizer/block_pass.c')
-rw-r--r--ext/opcache/Optimizer/block_pass.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c
index 7fd986ca6d..61a2b59d2f 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/ext/opcache/Optimizer/block_pass.c
@@ -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;