com php-src: New optimization pattern: ext/opcache/Optimizer/pass3.c
| From: | Dmitry Stogov | Date: | Wed, 31 May 2017 06:53:10 +0000 |
| Subject: | com php-src: New optimization pattern: ext/opcache/Optimizer/pass3.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-97965@lists.php.net to get a copy of this message | ||
Commit: a0cc6d426f709bf44741cd7254221bbc6e31c6a4
Author: Dmitry Stogov <dmitry@zend.com> Wed, 31 May 2017 09:53:10 +0300
Parents: bfd35512bb795f0b4f83c1c857acca7e6e552f6f
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a0cc6d426f709bf44741cd7254221bbc6e31c6a4
Log:
New optimization pattern
Changed paths:
M ext/opcache/Optimizer/pass3.c
Diff:
diff --git a/ext/opcache/Optimizer/pass3.c b/ext/opcache/Optimizer/pass3.c
index e5d032c...dfb3e0d 100644
--- a/ext/opcache/Optimizer/pass3.c
+++ b/ext/opcache/Optimizer/pass3.c
@@ -299,6 +299,13 @@ void zend_optimizer_pass3(zend_op_array *op_array)
JMPZ_EX(X,L1+1) */
ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target + 1);
break;
+ } else if (target->opcode == ZEND_BOOL &&
+ SAME_VAR(opline->result, target->op1)) {
+ /* convert Y = JMPZ_EX(X,L1), L1: Z = BOOL(Y) to
+ Z = JMPZ_EX(X,L1+1) */
+ opline->result.var = target->result.var;
+ ZEND_SET_OP_JMP_ADDR(opline, opline->op2, target + 1);
+ break;
} else {
break;
}