Simplify the macro (HT_DATA_SIZE/HT_HASH_SIZE is not used outside Zend)
authorXinchen Hui <laruence@php.net>
Thu, 13 Aug 2015 15:38:39 +0000 (23:38 +0800)
committerXinchen Hui <laruence@php.net>
Thu, 13 Aug 2015 15:38:39 +0000 (23:38 +0800)
Zend/zend_hash.c
Zend/zend_types.h

index e7109960dc735c01fdafd06bece02506f8877224..4f19fdd616b9b3725ebc8cd56a57104f7fc0710b 100644 (file)
@@ -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);
index 1bbf7963ad3c394cb5d964a3e58b4d6727e2462f..3185b4f9953e4f60b66122dc710e5efd1099b888 100644 (file)
@@ -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;