com php-src: More accurate handling of isset() and unset(): ext/opcache/Optimizer/zend_cfg.c
| From: | Dmitry Stogov | Date: | Fri, 22 Jan 2016 10:32:20 +0000 |
| Subject: | com php-src: More accurate handling of isset() and unset(): ext/opcache/Optimizer/zend_cfg.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-90731@lists.php.net to get a copy of this message | ||
Commit: 9b854ebab4ddd729a878b094268f639d2fa7b228
Author: Dmitry Stogov <dmitry@zend.com> Fri, 22 Jan 2016 13:32:20 +0300
Parents: 79071fe227cdd64799c1b0aa31425b85a503a42f
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=9b854ebab4ddd729a878b094268f639d2fa7b228
Log:
More accurate handling of isset() and unset()
Changed paths:
M ext/opcache/Optimizer/zend_cfg.c
Diff:
diff --git a/ext/opcache/Optimizer/zend_cfg.c b/ext/opcache/Optimizer/zend_cfg.c
index b812180..a712231 100644
--- a/ext/opcache/Optimizer/zend_cfg.c
+++ b/ext/opcache/Optimizer/zend_cfg.c
@@ -366,7 +366,12 @@ int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t
b
break;
case ZEND_UNSET_VAR:
case ZEND_ISSET_ISEMPTY_VAR:
- if (!(opline->extended_value & ZEND_QUICK_SET)) {
+ if (((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_LOCAL) &&
+ !(opline->extended_value & ZEND_QUICK_SET)) {
+ flags |= ZEND_FUNC_INDIRECT_VAR_ACCESS;
+ } else if (((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_GLOBAL ||
+ (opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_GLOBAL_LOCK)
&&
+ !op_array->function_name) {
flags |= ZEND_FUNC_INDIRECT_VAR_ACCESS;
}
break;