Lines Matching refs:ht

86 static void zend_hash_persist(HashTable *ht, zend_persist_func_t pPersistElement)  in zend_hash_persist()  argument
91 HT_FLAGS(ht) |= HASH_FLAG_STATIC_KEYS; in zend_hash_persist()
92 ht->pDestructor = NULL; in zend_hash_persist()
94 if (!(HT_FLAGS(ht) & HASH_FLAG_INITIALIZED)) { in zend_hash_persist()
96 HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket)); in zend_hash_persist()
98 HT_SET_DATA_ADDR(ht, &uninitialized_bucket); in zend_hash_persist()
102 if (ht->nNumUsed == 0) { in zend_hash_persist()
103 efree(HT_GET_DATA_ADDR(ht)); in zend_hash_persist()
104 ht->nTableMask = HT_MIN_MASK; in zend_hash_persist()
106 HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket)); in zend_hash_persist()
108 HT_SET_DATA_ADDR(ht, &uninitialized_bucket); in zend_hash_persist()
110 HT_FLAGS(ht) &= ~HASH_FLAG_INITIALIZED; in zend_hash_persist()
113 if (HT_FLAGS(ht) & HASH_FLAG_PACKED) { in zend_hash_persist()
114 void *data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
115 zend_accel_store(data, HT_USED_SIZE(ht)); in zend_hash_persist()
116 HT_SET_DATA_ADDR(ht, data); in zend_hash_persist()
117 } else if (ht->nNumUsed < (uint32_t)(-(int32_t)ht->nTableMask) / 4) { in zend_hash_persist()
119 void *old_data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
120 Bucket *old_buckets = ht->arData; in zend_hash_persist()
123 if (ht->nNumUsed <= HT_MIN_SIZE) { in zend_hash_persist()
126 hash_size = (uint32_t)(-(int32_t)ht->nTableMask); in zend_hash_persist()
127 while (hash_size >> 2 > ht->nNumUsed) { in zend_hash_persist()
131 ht->nTableMask = (uint32_t)(-(int32_t)hash_size); in zend_hash_persist()
133 HT_SET_DATA_ADDR(ht, ZCG(mem)); in zend_hash_persist()
134 …ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE((hash_size * sizeof(uint32_t)) + (ht->nNumU… in zend_hash_persist()
135 HT_HASH_RESET(ht); in zend_hash_persist()
136 memcpy(ht->arData, old_buckets, ht->nNumUsed * sizeof(Bucket)); in zend_hash_persist()
139 for (idx = 0; idx < ht->nNumUsed; idx++) { in zend_hash_persist()
140 p = ht->arData + idx; in zend_hash_persist()
151 nIndex = p->h | ht->nTableMask; in zend_hash_persist()
152 Z_NEXT(p->val) = HT_HASH(ht, nIndex); in zend_hash_persist()
153 HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); in zend_hash_persist()
158 void *old_data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
161 ZCG(mem) = (void*)((char*)data + ZEND_ALIGNED_SIZE(HT_USED_SIZE(ht))); in zend_hash_persist()
162 memcpy(data, old_data, HT_USED_SIZE(ht)); in zend_hash_persist()
164 HT_SET_DATA_ADDR(ht, data); in zend_hash_persist()
167 for (idx = 0; idx < ht->nNumUsed; idx++) { in zend_hash_persist()
168 p = ht->arData + idx; in zend_hash_persist()
181 static void zend_hash_persist_immutable(HashTable *ht) in zend_hash_persist_immutable() argument
186 HT_FLAGS(ht) |= HASH_FLAG_STATIC_KEYS; in zend_hash_persist_immutable()
187 ht->pDestructor = NULL; in zend_hash_persist_immutable()
189 if (!(HT_FLAGS(ht) & HASH_FLAG_INITIALIZED)) { in zend_hash_persist_immutable()
191 HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket)); in zend_hash_persist_immutable()
193 HT_SET_DATA_ADDR(ht, &uninitialized_bucket); in zend_hash_persist_immutable()
197 if (ht->nNumUsed == 0) { in zend_hash_persist_immutable()
198 efree(HT_GET_DATA_ADDR(ht)); in zend_hash_persist_immutable()
199 ht->nTableMask = HT_MIN_MASK; in zend_hash_persist_immutable()
201 HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket)); in zend_hash_persist_immutable()
203 HT_SET_DATA_ADDR(ht, &uninitialized_bucket); in zend_hash_persist_immutable()
205 HT_FLAGS(ht) &= ~HASH_FLAG_INITIALIZED; in zend_hash_persist_immutable()
208 if (HT_FLAGS(ht) & HASH_FLAG_PACKED) { in zend_hash_persist_immutable()
209 HT_SET_DATA_ADDR(ht, zend_accel_memdup(HT_GET_DATA_ADDR(ht), HT_USED_SIZE(ht))); in zend_hash_persist_immutable()
210 } else if (ht->nNumUsed < (uint32_t)(-(int32_t)ht->nTableMask) / 4) { in zend_hash_persist_immutable()
212 void *old_data = HT_GET_DATA_ADDR(ht); in zend_hash_persist_immutable()
213 Bucket *old_buckets = ht->arData; in zend_hash_persist_immutable()
216 if (ht->nNumUsed <= HT_MIN_SIZE) { in zend_hash_persist_immutable()
219 hash_size = (uint32_t)(-(int32_t)ht->nTableMask); in zend_hash_persist_immutable()
220 while (hash_size >> 2 > ht->nNumUsed) { in zend_hash_persist_immutable()
224 ht->nTableMask = (uint32_t)(-(int32_t)hash_size); in zend_hash_persist_immutable()
226 HT_SET_DATA_ADDR(ht, ZCG(mem)); in zend_hash_persist_immutable()
227 …ZCG(mem) = (void*)((char*)ZCG(mem) + (hash_size * sizeof(uint32_t)) + (ht->nNumUsed * sizeof(Bucke… in zend_hash_persist_immutable()
228 HT_HASH_RESET(ht); in zend_hash_persist_immutable()
229 memcpy(ht->arData, old_buckets, ht->nNumUsed * sizeof(Bucket)); in zend_hash_persist_immutable()
232 for (idx = 0; idx < ht->nNumUsed; idx++) { in zend_hash_persist_immutable()
233 p = ht->arData + idx; in zend_hash_persist_immutable()
244 nIndex = p->h | ht->nTableMask; in zend_hash_persist_immutable()
245 Z_NEXT(p->val) = HT_HASH(ht, nIndex); in zend_hash_persist_immutable()
246 HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); in zend_hash_persist_immutable()
253 ZCG(mem) = (void*)((char*)data + ZEND_ALIGNED_SIZE(HT_USED_SIZE(ht))); in zend_hash_persist_immutable()
254 memcpy(data, HT_GET_DATA_ADDR(ht), HT_USED_SIZE(ht)); in zend_hash_persist_immutable()
255 HT_SET_DATA_ADDR(ht, data); in zend_hash_persist_immutable()
257 for (idx = 0; idx < ht->nNumUsed; idx++) { in zend_hash_persist_immutable()
258 p = ht->arData + idx; in zend_hash_persist_immutable()