Lines Matching refs:ht

82 static void zend_hash_persist(HashTable *ht)  in zend_hash_persist()  argument
87 HT_FLAGS(ht) |= HASH_FLAG_STATIC_KEYS; in zend_hash_persist()
88 ht->pDestructor = NULL; in zend_hash_persist()
89 ht->nInternalPointer = 0; in zend_hash_persist()
91 if (HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) { in zend_hash_persist()
93 HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket)); in zend_hash_persist()
95 HT_SET_DATA_ADDR(ht, &uninitialized_bucket); in zend_hash_persist()
99 if (ht->nNumUsed == 0) { in zend_hash_persist()
100 efree(HT_GET_DATA_ADDR(ht)); in zend_hash_persist()
101 ht->nTableMask = HT_MIN_MASK; in zend_hash_persist()
103 HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket)); in zend_hash_persist()
105 HT_SET_DATA_ADDR(ht, &uninitialized_bucket); in zend_hash_persist()
107 HT_FLAGS(ht) |= HASH_FLAG_UNINITIALIZED; in zend_hash_persist()
110 if (HT_FLAGS(ht) & HASH_FLAG_PACKED) { in zend_hash_persist()
111 void *data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
112 data = zend_shared_memdup_free(data, HT_USED_SIZE(ht)); in zend_hash_persist()
113 HT_SET_DATA_ADDR(ht, data); in zend_hash_persist()
114 } else if (ht->nNumUsed > HT_MIN_SIZE && ht->nNumUsed < (uint32_t)(-(int32_t)ht->nTableMask) / 4) { in zend_hash_persist()
116 void *old_data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
117 Bucket *old_buckets = ht->arData; in zend_hash_persist()
120 hash_size = (uint32_t)(-(int32_t)ht->nTableMask); in zend_hash_persist()
121 while (hash_size >> 2 > ht->nNumUsed) { in zend_hash_persist()
124 ht->nTableMask = (uint32_t)(-(int32_t)hash_size); in zend_hash_persist()
126 HT_SET_DATA_ADDR(ht, ZCG(mem)); in zend_hash_persist()
127 …ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE((hash_size * sizeof(uint32_t)) + (ht->nNumU… in zend_hash_persist()
128 HT_HASH_RESET(ht); in zend_hash_persist()
129 memcpy(ht->arData, old_buckets, ht->nNumUsed * sizeof(Bucket)); in zend_hash_persist()
133 for (idx = 0; idx < ht->nNumUsed; idx++) { in zend_hash_persist()
134 p = ht->arData + idx; in zend_hash_persist()
136 nIndex = p->h | ht->nTableMask; in zend_hash_persist()
137 Z_NEXT(p->val) = HT_HASH(ht, nIndex); in zend_hash_persist()
138 HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); in zend_hash_persist()
142 void *old_data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
145 ZCG(mem) = (void*)((char*)data + ZEND_ALIGNED_SIZE(HT_USED_SIZE(ht))); in zend_hash_persist()
146 memcpy(data, old_data, HT_USED_SIZE(ht)); in zend_hash_persist()
148 HT_SET_DATA_ADDR(ht, data); in zend_hash_persist()