On Mon, Mar 14, 2016 at 11:56 AM, Dmitry Stogov <dmi...@zend.com> wrote:
> Please take a quick look and let me know if you see any problems. > > > https://gist.github.com/dstogov/23cc318dd3e411904e10 > > > I'm going to commit this tomorrow. > > > Thanks. Dmitry. > ZEND_ADD is not commutative for array operands. ZEND_MUL may not be commutative if operator overloading is involved (e.g. matrix multiplication is not abelian). The NO_CONST_CONST cases are problematic: Opcache currently, in my eyes incorrectly, evaluates constant expressions even if they throw notices (currently I think mostly by suppressing them). If we do not evaluate these, we may end up with CONST_CONST operations. (This is not a huge problem just now because constant folding in opcache is limited -- however with full constant propagation this leads to many test failures.) The opcodes affected by the last point (limited to those included in your patch) are SUB, MUL, POW, CONCAT (array operands) and BW_NOT (various). However with Andrea's invalid numeric string RFC more will fall in this category (evaluable but throwing). Nikita