From cc12acefcd4de93a2e8bcd0fe7dc2e000f14159d Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Dec 2017 13:21:35 +0300 Subject: Use cheaper functions --- Zend/zend_constants.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'Zend/zend_constants.c') 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; } } } -- cgit v1.2.1