On Thu, Nov 15, 2012 at 1:53 PM, Diego Novillo <dnovi...@google.com> wrote:
>
> 2012-11-15  Diego Novillo  <dnovi...@google.com>
>
>         * vec.c (register_overhead): Convert it into
>         member function of vec_prefix.
>         (release_overhead): Likewise.
>         (calculate_allocation): Likewise.
>         (vec_heap_free): Remove.
>         (vec_gc_o_reserve_1): Remove.
>         (vec_heap_o_reserve_1): Remove.
>         (vec_stack_o_reserve_1): Remove.
>         (vec_stack_o_reserve_exact): Remove.
>         (register_stack_vec): New.
>         (stack_vec_register_index): New.
>         (unregister_stack_vec): New.
>         (vec_assert_fail): Remove.
>         * vec.h: Conditionally include ggc.h.  Document conditional
>         hackery.
>         Update top-level documentation.
>         (ALONE_VEC_CHECK_INFO): Remove.
>         (VEC_CHECK_INFO): Remove.
>         (ALONE_VEC_CHECK_DECL): Remove.
>         (VEC_CHECK_DECL): Remove.
>         (ALONE_VEC_CHECK_PASS): Remove.
>         (VEC_CHECK_PASS): Remove.
>         (VEC_ASSERT): Remove.
>         (vec_prefix): Add friends va_gc, va_gc_atomic, va_heap and
>         va_stack.
>         Mark fields alloc_ and num_ as protected.
>         (struct vec_t): Remove.  Remove all function members.
>         (struct vl_embed): Declare.
>         (struct vl_ptr): Declare.
>         (free): Remove.
>         (reserve_exact): Remove.
>         (reserve): Remove.
>         (safe_splice): Remove.
>         (safe_push): Remove.
>         (safe_grow): Remove.
>         (safe_grow_cleared): Remove.
>         (safe_insert): Remove.
>         (DEF_VEC_I): Remove.
>         (DEF_VEC_ALLOC_I): Remove.
>         (DEF_VEC_P): Remove.
>         (DEF_VEC_ALLOC_P): Remove.
>         (DEF_VEC_O): Remove.
>         (DEF_VEC_ALLOC_O): Remove.
>         (DEF_VEC_ALLOC_P_STACK): Remove.
>         (DEF_VEC_ALLOC_O_STACK): Remove.
>         (DEF_VEC_ALLOC_I_STACK): Remove.
>         (DEF_VEC_A): Remove.
>         (DEF_VEC_ALLOC_A): Remove.
>         (vec_stack_p_reserve_exact_1): Remove.
>         (vec_stack_o_reserve): Remove.
>         (vec_stack_o_reserve_exact): Remove.
>         (VEC_length): Remove.
>         (VEC_empty): Remove.
>         (VEC_address): Remove.
>         (vec_address): Remove.
>         (VEC_last): Remove.
>         (VEC_index): Remove.
>         (VEC_iterate): Remove.
>         (VEC_embedded_size): Remove.
>         (VEC_embedded_init): Remove.
>         (VEC_free): Remove.
>         (VEC_copy): Remove.
>         (VEC_space): Remove.
>         (VEC_reserve): Remove.
>         (VEC_reserve_exact): Remove.
>         (VEC_splice): Remove.
>         (VEC_safe_splice): Remove.
>         (VEC_quick_push): Remove.
>         (VEC_safe_push): Remove.
>         (VEC_pop): Remove.
>         (VEC_truncate): Remove.
>         (VEC_safe_grow): Remove.
>         (VEC_replace): Remove.
>         (VEC_quick_insert): Remove.
>         (VEC_safe_insert): Remove.
>         (VEC_ordered_remove): Remove.
>         (VEC_unordered_remove): Remove.
>         (VEC_block_remove): Remove.
>         (VEC_lower_bound): Remove.
>         (VEC_alloc): Remove.
>         (VEC_qsort): Remove.
>
>         (va_heap): Declare.
>         (va_heap::default_layout): New typedef to vl_ptr.
>         (va_heap::reserve): New.
>         (va_heap::release): New.
>         (va_gc): Declare.
>         (va_gc::default_layout): New typedef to vl_embed.
>         (va_gc::reserve): New.
>         (va_gc::release): New.
>         (va_gc_atomic): Declare.  Inherit from va_gc.
>         (va_stack): Declare.
>         (va_stack::default_layout): New typedef to vl_ptr.
>         (va_stack::alloc): New.
>         (va_stack::reserve): New.
>         (va_stack::release): New.
>         (register_stack_vec): Declare.
>         (stack_vec_register_index): Declare.
>         (unregister_stack_vec): Declare.
>
>         (vec<T, A = va_heap, L = typename A::default_layout>): Declare
>         empty vec template.
>         (vec<T, A, vl_embed>): Partial specialization for embedded
>         layout.
>         (vec<T, A, vl_embed>::allocated): New.
>         (vec<T, A, vl_embed>::length): New.
>         (vec<T, A, vl_embed>::is_empty): New.
>         (vec<T, A, vl_embed>::address): New.
>         (vec<T, A, vl_embed>::operator[]): New.
>         (vec<T, A, vl_embed>::last New.
>         (vec<T, A, vl_embed>::space): New.
>         (vec<T, A, vl_embed>::iterate): New.
>         (vec<T, A, vl_embed>::iterate): New.
>         (vec<T, A, vl_embed>::copy): New.
>         (vec<T, A, vl_embed>::splice): New.
>         (vec<T, A, vl_embed>::quick_push New.
>         (vec<T, A, vl_embed>::pop New.
>         (vec<T, A, vl_embed>::truncate): New.
>         (vec<T, A, vl_embed>::quick_insert): New.
>         (vec<T, A, vl_embed>::ordered_remove): New.
>         (vec<T, A, vl_embed>::unordered_remove): New.
>         (vec<T, A, vl_embed>::block_remove): New.
>         (vec<T, A, vl_embed>::qsort): New.
>         (vec<T, A, vl_embed>::lower_bound): New.
>         (vec<T, A, vl_embed>::embedded_size): New.
>         (vec<T, A, vl_embed>::embedded_init): New.
>         (vec<T, A, vl_embed>::quick_grow): New.
>         (vec<T, A, vl_embed>::quick_grow_cleared): New.
>         (vec_safe_space): New.
>         (vec_safe_length): New.
>         (vec_safe_address): New.
>         (vec_safe_is_empty): New.
>         (vec_safe_reserve): New.
>         (vec_safe_reserve_exact): New.
>         (vec_alloc): New.
>         (vec_free): New.
>         (vec_safe_grow): New.
>         (vec_safe_grow_cleared): New.
>         (vec_safe_iterate): New.
>         (vec_safe_push): New.
>         (vec_safe_insert): New.
>         (vec_safe_truncate): New.
>         (vec_safe_copy): New.
>         (vec_safe_splice): New.
>
>         (vec<T, A, vl_ptr>): New partial specialization for the space
>         efficient layout.
>         (vec<T, A, vl_embed>::exists): New.
>         (vec<T, A, vl_embed>::is_empty): New.
>         (vec<T, A, vl_embed>::length): New.
>         (vec<T, A, vl_embed>::address): New.
>         (vec<T, A, vl_embed>::operator[]): New.
>         (vec<T, A, vl_embed>::operator!=): New.
>         (vec<T, A, vl_embed>::operator==): New.
>         (vec<T, A, vl_embed>::last New.
>         (vec<T, A, vl_embed>::space): New.
>         (vec<T, A, vl_embed>::iterate): New.
>         (vec<T, A, vl_embed>::copy): New.
>         (vec<T, A, vl_embed>::reserve): New.
>         (vec<T, A, vl_embed>::reserve_exact): New.
>         (vec<T, A, vl_embed>::splice): New.
>         (vec<T, A, vl_embed>::safe_splice): New.
>         (vec<T, A, vl_embed>::quick_push): New.
>         (vec<T, A, vl_embed>::safe_push): New.
>         (vec<T, A, vl_embed>::pop New.
>         (vec<T, A, vl_embed>::truncate): New.
>         (vec<T, A, vl_embed>::safe_grow): New.
>         (vec<T, A, vl_embed>::safe_grow_cleared): New.
>         (vec<T, A, vl_embed>::quick_grow): New.
>         (vec<T, A, vl_embed>::quick_grow_cleared): New.
>         (vec<T, A, vl_embed>::quick_insert): New.
>         (vec<T, A, vl_embed>::safe_insert): New.
>         (vec<T, A, vl_embed>::ordered_remove): New.
>         (vec<T, A, vl_embed>::unordered_remove): New.
>         (vec<T, A, vl_embed>::block_remove): New.
>         (vec<T, A, vl_embed>::qsort): New.
>         (vec<T, A, vl_embed>::lower_bound): New.
>         (vec_stack_alloc): Define.
>         (FOR_EACH_VEC_SAFE_ELT): Define.
>         * vecir.h: Remove.  Update all users.
>         * vecprim.h: Remove.  Update all users.
>         Move uchar to coretypes.h.
>
>         * Makefile.in (VEC_H): Add $(GGC_H).
>         Remove vecir.h and vecprim.h dependencies everywhere.

This looks OK to me.

Ian

Reply via email to