Lines Matching refs:ht

92 static void zend_hash_persist(HashTable *ht)  in zend_hash_persist()  argument
97 HT_FLAGS(ht) |= HASH_FLAG_STATIC_KEYS; in zend_hash_persist()
98 ht->pDestructor = NULL; in zend_hash_persist()
99 ht->nInternalPointer = 0; in zend_hash_persist()
101 if (HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) { 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()
109 if (ht->nNumUsed == 0) { in zend_hash_persist()
110 efree(HT_GET_DATA_ADDR(ht)); in zend_hash_persist()
111 ht->nTableMask = HT_MIN_MASK; in zend_hash_persist()
113 HT_SET_DATA_ADDR(ht, &ZCSG(uninitialized_bucket)); in zend_hash_persist()
115 HT_SET_DATA_ADDR(ht, &uninitialized_bucket); in zend_hash_persist()
117 HT_FLAGS(ht) |= HASH_FLAG_UNINITIALIZED; in zend_hash_persist()
120 if (HT_IS_PACKED(ht)) { in zend_hash_persist()
121 void *data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
122 if (GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE) { in zend_hash_persist()
123 data = zend_shared_memdup(data, HT_PACKED_USED_SIZE(ht)); in zend_hash_persist()
125 data = zend_shared_memdup_free(data, HT_PACKED_USED_SIZE(ht)); in zend_hash_persist()
127 HT_SET_DATA_ADDR(ht, data); in zend_hash_persist()
128 } else if (ht->nNumUsed > HT_MIN_SIZE && ht->nNumUsed < (uint32_t)(-(int32_t)ht->nTableMask) / 4) { in zend_hash_persist()
130 void *old_data = HT_GET_DATA_ADDR(ht); in zend_hash_persist()
131 Bucket *old_buckets = ht->arData; in zend_hash_persist()
134 hash_size = (uint32_t)(-(int32_t)ht->nTableMask); in zend_hash_persist()
135 while (hash_size >> 2 > ht->nNumUsed) { in zend_hash_persist()
138 ht->nTableMask = (uint32_t)(-(int32_t)hash_size); in zend_hash_persist()
140 HT_SET_DATA_ADDR(ht, ZCG(mem)); in zend_hash_persist()
141 …ZCG(mem) = (void*)((char*)ZCG(mem) + ZEND_ALIGNED_SIZE((hash_size * sizeof(uint32_t)) + (ht->nNumU… in zend_hash_persist()
142 HT_HASH_RESET(ht); in zend_hash_persist()
143 memcpy(ht->arData, old_buckets, ht->nNumUsed * sizeof(Bucket)); in zend_hash_persist()
144 if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { in zend_hash_persist()
149 for (idx = 0; idx < ht->nNumUsed; idx++) { in zend_hash_persist()
150 p = ht->arData + idx; in zend_hash_persist()
152 nIndex = p->h | ht->nTableMask; in zend_hash_persist()
153 Z_NEXT(p->val) = HT_HASH(ht, nIndex); in zend_hash_persist()
154 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()
163 if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) { in zend_hash_persist()
166 HT_SET_DATA_ADDR(ht, data); in zend_hash_persist()
220 HashTable *ht; in zend_persist_zval() local
223 ht = zend_shared_memdup_put(Z_ARR_P(z), sizeof(zend_array)); in zend_persist_zval()
226 ht = zend_shared_memdup_put_free(Z_ARR_P(z), sizeof(zend_array)); in zend_persist_zval()
228 Z_ARR_P(z) = ht; in zend_persist_zval()
229 zend_hash_persist(ht); in zend_persist_zval()
230 if (HT_IS_PACKED(ht)) { in zend_persist_zval()
233 ZEND_HASH_PACKED_FOREACH_VAL(ht, zv) { in zend_persist_zval()
239 ZEND_HASH_MAP_FOREACH_BUCKET(ht, p) { in zend_persist_zval()