diff options
Diffstat (limited to 'ext/opcache/Optimizer')
| -rw-r--r-- | ext/opcache/Optimizer/compact_literals.c | 5 | ||||
| -rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 79f3c04352..8fb5a9b0c9 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -232,6 +232,11 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx LITERAL_INFO(opline->op2.constant, LITERAL_CLASS, 1, 1, 2); } break; + case ZEND_NEW: + if (ZEND_OP1_TYPE(opline) == IS_CONST) { + LITERAL_INFO(opline->op1.constant, LITERAL_CLASS, 1, 1, 2); + } + break; case ZEND_ASSIGN_OBJ: case ZEND_FETCH_OBJ_R: case ZEND_FETCH_OBJ_W: diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index fb40349d27..1a6d0b675a 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -126,6 +126,7 @@ void zend_optimizer_update_op1_const(zend_op_array *op_array, case ZEND_CATCH: case ZEND_FETCH_CONSTANT: case ZEND_DEFINED: + case ZEND_NEW: opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); zend_string_hash_val(Z_STR(ZEND_OP1_LITERAL(opline))); Z_CACHE_SLOT(op_array->literals[opline->op1.constant]) = op_array->last_cache_slot++; |
