ZEND_API uint32_t zend_array_count(HashTable *ht)
{
uint32_t num;
- if (UNEXPECTED(ht->u.v.flags & HASH_FLAG_HAS_EMPTY_IND)) {
+ if (UNEXPECTED(HT_FLAGS(ht) & HASH_FLAG_HAS_EMPTY_IND)) {
num = zend_array_recalc_elements(ht);
if (UNEXPECTED(ht->nNumOfElements == num)) {
- ht->u.v.flags &= ~HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(ht) &= ~HASH_FLAG_HAS_EMPTY_IND;
}
} else if (UNEXPECTED(ht == &EG(symbol_table))) {
num = zend_array_recalc_elements(ht);
} else {
ZVAL_UNDEF(data);
}
- ht->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(ht) |= HASH_FLAG_HAS_EMPTY_IND;
}
} else {
_zend_hash_del_el_ex(ht, idx, p, prev);
ht->pDestructor(data);
}
ZVAL_UNDEF(data);
- ht->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(ht) |= HASH_FLAG_HAS_EMPTY_IND;
}
} else {
_zend_hash_del_el_ex(ht, idx, p, prev);
(prop_info->flags & ZEND_ACC_STATIC) == 0) {
if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) {
- zobj->properties->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
}
_zend_hash_append_ind(zobj->properties, prop_info->name,
zval zv;
if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) {
- zobj->properties->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
}
ZVAL_INDIRECT(&zv, OBJ_PROP(zobj, prop_info->offset));
zval_ptr_dtor(slot);
ZVAL_UNDEF(slot);
if (zobj->properties) {
- zobj->properties->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND;
}
goto exit;
}
zend_hash_extend(new_object->properties, new_object->properties->nNumUsed + zend_hash_num_elements(old_object->properties), 0);
}
- new_object->properties->u.v.flags |=
- old_object->properties->u.v.flags & HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(new_object->properties) |=
+ HT_FLAGS(old_object->properties) & HASH_FLAG_HAS_EMPTY_IND;
ZEND_HASH_FOREACH_KEY_VAL(old_object->properties, num_key, key, prop) {
if (Z_TYPE_P(prop) == IS_INDIRECT) {
} else {
zval_ptr_dtor(data);
ZVAL_UNDEF(data);
- ht->u.v.flags |= HASH_FLAG_HAS_EMPTY_IND;
+ HT_FLAGS(ht) |= HASH_FLAG_HAS_EMPTY_IND;
zend_hash_move_forward_ex(ht, spl_array_get_pos_ptr(ht, intern));
if (spl_array_is_object(intern)) {
spl_array_skip_protected(intern, ht);
in_hash->pDestructor = NULL;
zend_hash_destroy(in_hash);
- in_hash->u.v.flags = out_hash.u.v.flags;
+ HT_FLAGS(in_hash) = HT_FLAGS(&out_hash);
in_hash->nTableSize = out_hash.nTableSize;
in_hash->nTableMask = out_hash.nTableMask;
in_hash->nNumUsed = out_hash.nNumUsed;
Z_ARRVAL_P(stack)->pDestructor = NULL;
zend_hash_destroy(Z_ARRVAL_P(stack));
- Z_ARRVAL_P(stack)->u.v.flags = new_hash.u.v.flags;
+ HT_FLAGS(Z_ARRVAL_P(stack)) = HT_FLAGS(&new_hash);
Z_ARRVAL_P(stack)->nTableSize = new_hash.nTableSize;
Z_ARRVAL_P(stack)->nTableMask = new_hash.nTableMask;
Z_ARRVAL_P(stack)->nNumUsed = new_hash.nNumUsed;