gcc-in-cxx: Garbage Collecting STL Containers
Basile STARYNKEVITCH
basile@starynkevitch.net
Wed Jun 25 14:05:00 GMT 2008
Chris Jefferson wrote:
> Could someone point me towards what is necessary to add STL containers
> to the garbage collector?
>
> One big problem with garbage collecting in C++ is the need to run
> destructors. If the (I believe very reasonable) decision is made to
> require that running destructors is not necessary for garbage
> collected types, then my experience is doing gc is very easy, and for
> garbage collection it's easy to just look at the internal members
> which all behave "sensibly".
>
> Stripping away all the C++isms, and assuming that we use the default
> allocator which uses malloc, then a std::vector is just a struct
>
> struct vector
> {
> T* begin;
> T* finish;
> T* end_of_storage;
> };
>
> Where we increment finish whenever we add something to the vector,
> until finish = end_of_storage, at which point new memory is allocated,
> the data is copied across, and then the old memory is freed. I can't
> think of any other (or any simpler) way to construct a variable sized
> container, in either C or C++.
>
> Other containers are similar.
I fully agree on that point. To summarize: most of the classes in the
gcc-in-cxx should have no destructor at all, or a trivial destructor
which only destroys the data inside.
However, I am not sure this applies to std::string etc..
In addition, this raise several questions:
Does complex static data (i.e. statically allocated instances of complex
classes) is allowed in gcc-in-cxx?
Do we intend to have a wide forest of classes in gcc-in-cxx? I would
prefer a tree of classes (with only single inheritance) sharing a common
root class.
At last, C++ permits interesting ways of writing garbage collectors,
because it can help to make easier the boxing of GC-ed values on the stack.
Regards.
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***
More information about the Gcc
mailing list