Browse Source

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
pull/865/merge
Dmitry Stogov 12 years ago
parent
commit
702a2dfb3e
  1. 6
      ext/opcache/Optimizer/pass1_5.c

6
ext/opcache/Optimizer/pass1_5.c

@ -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))) {

Loading…
Cancel
Save