This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Type safe vector API


Nathan Sidwell wrote:

Hi,
Here's a patch which implements a type safe vector API, and a separate patch
which applies it to the CLASSTYPE_VBASECLASSES.


The basic idea is that you define a vector of pointers with
    DEF_VEC_P(typedef)
and a vector of objects with
    DEF_VEC_O(typedef)
these produce a structure declaration and a set of inline functions to
manipulate the vector.

You define a pointer to vector object with
    VEC(typedef) *v;
and away you go. You have to deal with pointers to vectors, as
the implementation uses the trailing array hack.  There is an API
call to allow you to have a structure ending with a vector member
(something that would be useful for a BINFO or TEMPLATE_ARG_VEC).

I couldn't measure time or size difference with this patch, as I
didn't have a testcase with significant virtual bases.

ok?

I've been waiting to see if someone else would comment.


To me, this looks fine. I'm a little nervous about the way in which you're using the API for CLASSTYPE_VBASECLASSES in that it looks like you're conservatively estimating the size of the vector, so it might not actually be a win over the TREE_LIST thing we have now. As you say, however, this is a tiny amount of memory one way or the other.

You need comments on some of the functions; for example, macro_input.

If nobody objects in another 24 hours, please go ahead and check this in. Hopefully the tree-ssa folks can make use of this for their purposes as well.

--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]