exponentially. VEC can be NULL, to create a new vector. */
void *
-vec_p_reserve (void *vec, size_t reserve)
+vec_p_reserve (void *vec, size_t reserve MEM_STAT_DECL)
{
return vec_o_reserve (vec, reserve,
- offsetof (struct vec_prefix, vec), sizeof (void *));
+ offsetof (struct vec_prefix, vec), sizeof (void *)
+ PASS_MEM_STAT);
}
/* Ensure there are at least RESERVE free slots in VEC, if RESERVE !=
consistes of ELT_SIZE sized elements. */
void *
-vec_o_reserve (void *vec, size_t reserve, size_t vec_offset, size_t elt_size)
+vec_o_reserve (void *vec, size_t reserve, size_t vec_offset, size_t elt_size
+ MEM_STAT_DECL)
{
struct vec_prefix *pfx = vec;
size_t alloc;
if (!pfx || pfx->alloc < alloc)
{
- vec = ggc_realloc (vec, vec_offset + alloc * elt_size);
+ vec = ggc_realloc_stat (vec, vec_offset + alloc * elt_size
+ PASS_MEM_STAT);
((struct vec_prefix *)vec)->alloc = alloc;
if (!pfx)
((struct vec_prefix *)vec)->num = 0;
return vec;
}
-/* Allocate a structure which contains a vector as a trailing element.
- The vector is at STRUCT_OFFSET offset within the struct and the
- vector's array is at VEC_OFFSET offset within the vector. */
-
-void *
-vec_embedded_alloc (size_t struct_offset, size_t vec_offset,
- size_t elt_size, size_t reserve)
-{
- void *ptr = ggc_alloc (struct_offset + vec_offset + elt_size * reserve);
- struct vec_prefix *pfx = (struct vec_prefix *)((char *)ptr + struct_offset);
-
- pfx->num = 0;
- pfx->alloc = reserve;
-
- return ptr;
-}
-
#if ENABLE_CHECKING
/* Issue a vector domain error, and then fall over. */