diff options
author | Dmitry Stogov <dmitry@zend.com> | 2017-12-04 13:21:35 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2017-12-04 13:21:35 +0300 |
commit | cc12acefcd4de93a2e8bcd0fe7dc2e000f14159d (patch) | |
tree | 4d137ed61b3ecc446ddeb75106fe6984fdac4ca5 /Zend/zend_constants.c | |
parent | 7b085635d71b44c15d1057049c0cf38ff15d4a09 (diff) | |
download | php-git-cc12acefcd4de93a2e8bcd0fe7dc2e000f14159d.tar.gz |
Use cheaper functions
Diffstat (limited to 'Zend/zend_constants.c')
-rw-r--r-- | Zend/zend_constants.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index d8b10b1e91..639c15807d 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -417,26 +417,30 @@ failure: ZEND_API zend_constant* ZEND_FASTCALL zend_quick_get_constant(const zval *key, uint32_t flags) { - zend_constant *c; + zval *zv; + zend_constant *c = NULL; - if ((c = zend_hash_find_ptr(EG(zend_constants), Z_STR_P(key))) == NULL) { + zv = zend_hash_find_ex(EG(zend_constants), Z_STR_P(key), 1); + if (zv) { + c = (zend_constant*)Z_PTR_P(zv); + } else { key++; - if ((c = zend_hash_find_ptr(EG(zend_constants), Z_STR_P(key))) == NULL || - (c->flags & CONST_CS) != 0) { + zv = zend_hash_find_ex(EG(zend_constants), Z_STR_P(key), 1); + if (zv && (((zend_constant*)Z_PTR_P(zv))->flags & CONST_CS) == 0) { + c = (zend_constant*)Z_PTR_P(zv); + } else { if ((flags & (IS_CONSTANT_IN_NAMESPACE|IS_CONSTANT_UNQUALIFIED)) == (IS_CONSTANT_IN_NAMESPACE|IS_CONSTANT_UNQUALIFIED)) { key++; - if ((c = zend_hash_find_ptr(EG(zend_constants), Z_STR_P(key))) == NULL) { + zv = zend_hash_find_ex(EG(zend_constants), Z_STR_P(key), 1); + if (zv) { + c = (zend_constant*)Z_PTR_P(zv); + } else { key++; - if ((c = zend_hash_find_ptr(EG(zend_constants), Z_STR_P(key))) == NULL || - (c->flags & CONST_CS) != 0) { - - key--; - c = NULL; + zv = zend_hash_find_ex(EG(zend_constants), Z_STR_P(key), 1); + if (zv && (((zend_constant*)Z_PTR_P(zv))->flags & CONST_CS) == 0) { + c = (zend_constant*)Z_PTR_P(zv); } } - } else { - key--; - c = NULL; } } } |