mirror of
https://github.com/php/php-src.git
synced 2026-04-25 00:48:25 +02:00
Merge branch 'PHP-5.6'
* PHP-5.6: We can't eliminate FETCH_CONSTANT opcodes for constants represented by AST. Conflicts: ext/opcache/Optimizer/pass1_5.c
This commit is contained in:
@@ -266,6 +266,9 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx TSRML
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (Z_TYPE(c) == IS_CONSTANT_AST) {
|
||||
break;
|
||||
}
|
||||
literal_dtor(&ZEND_OP2_LITERAL(opline));
|
||||
MAKE_NOP(opline);
|
||||
zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, tv, &c TSRMLS_CC);
|
||||
@@ -312,6 +315,9 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx TSRML
|
||||
if ((c = zend_hash_find(&ce->constants_table,
|
||||
Z_STR(ZEND_OP2_LITERAL(opline)))) != NULL) {
|
||||
ZVAL_DEREF(c);
|
||||
if (Z_TYPE_P(c) == IS_CONSTANT_AST) {
|
||||
break;
|
||||
}
|
||||
if (ZEND_IS_CONSTANT_TYPE(Z_TYPE_P(c))) {
|
||||
if (!zend_optimizer_get_persistent_constant(Z_STR_P(c), &t, 1 TSRMLS_CC) ||
|
||||
ZEND_IS_CONSTANT_TYPE(Z_TYPE(t))) {
|
||||
|
||||
Reference in New Issue
Block a user