summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-07-29 17:04:23 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-07-29 17:04:23 +0200
commit57ad5b34325db883726ec96c0683c7c1bd874cc4 (patch)
treed2120b1163a4aa96c7902a84e17d485c9020f93b
parent99c48a24779dab32e004b2bc99441155e217c08f (diff)
downloadphp-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.c3
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);
}