diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-07-29 17:04:23 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-07-29 17:04:23 +0200 |
commit | 57ad5b34325db883726ec96c0683c7c1bd874cc4 (patch) | |
tree | d2120b1163a4aa96c7902a84e17d485c9020f93b | |
parent | 99c48a24779dab32e004b2bc99441155e217c08f (diff) | |
download | php-git-57ad5b34325db883726ec96c0683c7c1bd874cc4.tar.gz |
Consider op1 literal of FETCH_OBJ_R
FETCH_OBJ_R may have an op1 CONST operand, even though it will
always error. We should take this into account when compacting
literals.
-rw-r--r-- | ext/opcache/Optimizer/compact_literals.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index e4dab13b9c..f90b8175c3 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -223,6 +223,9 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx case ZEND_POST_INC_OBJ: case ZEND_POST_DEC_OBJ: case ZEND_ISSET_ISEMPTY_PROP_OBJ: + if (opline->op1_type == IS_CONST) { + LITERAL_INFO(opline->op1.constant, LITERAL_VALUE, 1); + } if (opline->op2_type == IS_CONST) { LITERAL_INFO(opline->op2.constant, LITERAL_PROPERTY, 1); } |