diff options
author | Dmitry Stogov <dmitry@zend.com> | 2016-01-22 13:30:34 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2016-01-22 13:30:34 +0300 |
commit | 79071fe227cdd64799c1b0aa31425b85a503a42f (patch) | |
tree | d1a47232916f2653ddb0793abdc373f7c31a4eff | |
parent | 0df9b514799aeafdae2b5d1a8aac7ccb9ca31dd4 (diff) | |
download | php-git-79071fe227cdd64799c1b0aa31425b85a503a42f.tar.gz |
Added optimization constraint (don't optimize result of NEW, because constructor may throw exception)
-rw-r--r-- | ext/opcache/Optimizer/dfa_pass.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/dfa_pass.c b/ext/opcache/Optimizer/dfa_pass.c index 02dfdd5b7e..7c71e535b4 100644 --- a/ext/opcache/Optimizer/dfa_pass.c +++ b/ext/opcache/Optimizer/dfa_pass.c @@ -155,6 +155,8 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx && ssa->ops[op2].op2_use_chain < 0 && !ssa->vars[var1].phi_use_chain && !ssa->vars[var1].sym_use_chain + /* see Zend/tests/generators/aborted_yield_during_new.phpt */ + && op_array->opcodes[ssa->vars[var1].definition].opcode != ZEND_NEW ) { int op1 = ssa->vars[var1].definition; int var3 = i; |