summaryrefslogtreecommitdiff
path: root/Zend/zend_constants.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-12-04 13:21:35 +0300
committerDmitry Stogov <dmitry@zend.com>2017-12-04 13:21:35 +0300
commitcc12acefcd4de93a2e8bcd0fe7dc2e000f14159d (patch)
tree4d137ed61b3ecc446ddeb75106fe6984fdac4ca5 /Zend/zend_constants.c
parent7b085635d71b44c15d1057049c0cf38ff15d4a09 (diff)
downloadphp-git-cc12acefcd4de93a2e8bcd0fe7dc2e000f14159d.tar.gz
Use cheaper functions
Diffstat (limited to 'Zend/zend_constants.c')
-rw-r--r--Zend/zend_constants.c30
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;
}
}
}