From: Xinchen Hui Date: Thu, 13 Aug 2015 15:38:39 +0000 (+0800) Subject: Simplify the macro (HT_DATA_SIZE/HT_HASH_SIZE is not used outside Zend) X-Git-Tag: php-7.0.0RC1~7^2~33 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=66866fb8388fb9bc0585944913dad3fb18f8b8bd;p=php Simplify the macro (HT_DATA_SIZE/HT_HASH_SIZE is not used outside Zend) --- diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index e7109960dc..4f19fdd616 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -197,7 +197,7 @@ ZEND_API void ZEND_FASTCALL zend_hash_packed_to_hash(HashTable *ht) HT_ASSERT(GC_REFCOUNT(ht) == 1); HANDLE_BLOCK_INTERRUPTIONS(); ht->u.flags &= ~HASH_FLAG_PACKED; - new_data = pemalloc(HT_DATA_SIZE_EX(ht->nTableSize) + HT_HASH_SIZE_EX(-ht->nTableSize), (ht)->u.flags & HASH_FLAG_PERSISTENT); + new_data = pemalloc(HT_SIZE_EX(ht->nTableSize, -ht->nTableSize), (ht)->u.flags & HASH_FLAG_PERSISTENT); ht->nTableMask = -ht->nTableSize; HT_SET_DATA_ADDR(ht, new_data); memcpy(ht->arData, old_buckets, sizeof(Bucket) * ht->nNumUsed); @@ -213,7 +213,7 @@ ZEND_API void ZEND_FASTCALL zend_hash_to_packed(HashTable *ht) HT_ASSERT(GC_REFCOUNT(ht) == 1); HANDLE_BLOCK_INTERRUPTIONS(); - new_data = pemalloc(HT_DATA_SIZE_EX(ht->nTableSize) + HT_HASH_SIZE_EX(HT_MIN_MASK), (ht)->u.flags & HASH_FLAG_PERSISTENT); + new_data = pemalloc(HT_SIZE_EX(ht->nTableSize, HT_MIN_MASK), (ht)->u.flags & HASH_FLAG_PERSISTENT); ht->u.flags |= HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS; ht->nTableMask = HT_MIN_MASK; HT_SET_DATA_ADDR(ht, new_data); @@ -256,7 +256,7 @@ ZEND_API void ZEND_FASTCALL zend_hash_extend(HashTable *ht, uint32_t nSize, zend Bucket *old_buckets = ht->arData; nSize = zend_hash_check_size(nSize); HANDLE_BLOCK_INTERRUPTIONS(); - new_data = pemalloc(HT_DATA_SIZE_EX(nSize) + HT_HASH_SIZE_EX(-nSize), ht->u.flags & HASH_FLAG_PERSISTENT); + new_data = pemalloc(HT_SIZE_EX(nSize, -nSize), ht->u.flags & HASH_FLAG_PERSISTENT); ht->nTableSize = nSize; ht->nTableMask = -ht->nTableSize; HT_SET_DATA_ADDR(ht, new_data); @@ -803,7 +803,7 @@ static void ZEND_FASTCALL zend_hash_do_resize(HashTable *ht) Bucket *old_buckets = ht->arData; HANDLE_BLOCK_INTERRUPTIONS(); - new_data = pemalloc(HT_DATA_SIZE_EX(nSize) + HT_HASH_SIZE_EX(-nSize), ht->u.flags & HASH_FLAG_PERSISTENT); + new_data = pemalloc(HT_SIZE_EX(nSize, -nSize), ht->u.flags & HASH_FLAG_PERSISTENT); ht->nTableSize = nSize; ht->nTableMask = -ht->nTableSize; HT_SET_DATA_ADDR(ht, new_data); @@ -2202,7 +2202,7 @@ ZEND_API int ZEND_FASTCALL zend_hash_sort_ex(HashTable *ht, sort_func_t sort, co void *new_data, *old_data = HT_GET_DATA_ADDR(ht); Bucket *old_buckets = ht->arData; - new_data = pemalloc(HT_DATA_SIZE_EX(ht->nTableSize) + HT_HASH_SIZE_EX(HT_MIN_MASK), ht->u.flags & HASH_FLAG_PERSISTENT & HASH_FLAG_PERSISTENT); + new_data = pemalloc(HT_SIZE_EX(ht->nTableSize, HT_MIN_MASK), (ht->u.flags & HASH_FLAG_PERSISTENT)); ht->u.flags |= HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS; ht->nTableMask = HT_MIN_MASK; HT_SET_DATA_ADDR(ht, new_data); diff --git a/Zend/zend_types.h b/Zend/zend_types.h index 1bbf7963ad..3185b4f995 100644 --- a/Zend/zend_types.h +++ b/Zend/zend_types.h @@ -239,20 +239,18 @@ struct _zend_array { #define HT_HASH(ht, idx) \ HT_HASH_EX((ht)->arData, idx) -#define HT_HASH_SIZE_EX(nTableMask) \ +#define HT_HASH_SIZE(nTableMask) \ (((size_t)(uint32_t)-(int32_t)(nTableMask)) * sizeof(uint32_t)) -#define HT_DATA_SIZE_EX(nTableSize) \ +#define HT_DATA_SIZE(nTableSize) \ ((size_t)(nTableSize) * sizeof(Bucket)) -#define HT_HASH_SIZE(ht) \ - HT_HASH_SIZE_EX((ht)->nTableMask) -#define HT_DATA_SIZE(ht) \ - HT_DATA_SIZE_EX((ht)->nTableSize) +#define HT_SIZE_EX(nTableSize, nTableMask) \ + (HT_DATA_SIZE((nTableSize)) + HT_HASH_SIZE((nTableMask))) #define HT_SIZE(ht) \ - (HT_HASH_SIZE(ht) + HT_DATA_SIZE(ht)) + HT_SIZE_EX((ht)->nTableSize, (ht)->nTableMask) #define HT_USED_SIZE(ht) \ - (HT_HASH_SIZE(ht) + ((size_t)(ht)->nNumUsed * sizeof(Bucket))) + (HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(Bucket))) #define HT_HASH_RESET(ht) \ - memset(&HT_HASH(ht, (ht)->nTableMask), HT_INVALID_IDX, HT_HASH_SIZE(ht)) + memset(&HT_HASH(ht, (ht)->nTableMask), HT_INVALID_IDX, HT_HASH_SIZE((ht)->nTableMask)) #define HT_HASH_RESET_PACKED(ht) do { \ HT_HASH(ht, -2) = HT_INVALID_IDX; \ HT_HASH(ht, -1) = HT_INVALID_IDX; \ @@ -261,10 +259,10 @@ struct _zend_array { HT_HASH_TO_BUCKET_EX((ht)->arData, idx) #define HT_SET_DATA_ADDR(ht, ptr) do { \ - (ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE(ht)); \ + (ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \ } while (0) #define HT_GET_DATA_ADDR(ht) \ - ((char*)((ht)->arData) - HT_HASH_SIZE(ht)) + ((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask)) typedef uint32_t HashPosition;