diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-10-13 14:10:44 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-10-13 14:10:44 +0400 |
| commit | 702a2dfb3ef3c603d89bf7e4e9a63b6f8ff8968d (patch) | |
| tree | 95b84aa447928e30bb9767a6cacda4163d0eacdf | |
| parent | 0b09ba84b912be90c06d8d5ffab55bf850c3070b (diff) | |
| parent | 7acba332fe96e5da6ad3165d0699b9e4e65d94fa (diff) | |
| download | php-git-702a2dfb3ef3c603d89bf7e4e9a63b6f8ff8968d.tar.gz | |
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
| -rw-r--r-- | ext/opcache/Optimizer/pass1_5.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c index f06f5cc559..b91ac5b50f 100644 --- a/ext/opcache/Optimizer/pass1_5.c +++ b/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))) { |
