As some of you might know, I have been researching and working on a region-based
memory management plugin for GCC.  My target is specifically the Go language.
With that said, I have been making a fair amount of progress.  More recently, I
have been benchmarking my work, and it came to my attention that I need to
handle types defined in an external object files.  For instance, when a new List
object is created, the external package for List, calls "new" and returns us a
nice sparkly new List object.  The runtime of Go implements "new" as "__go_new,"
which calls the runtime's special allocator to produce an object that is garbage
collected.  This is causing some snags in my system.  Mainly, I want to use my
own allocator, since there is only a special case when I want to use garbage
collection in my region system.  Is there a way/interface to register data as a
root in the garbage collector, so that its not in conflict with my allocation?

The other option would be to try to override "__go_new" with my own
implementation, but keeping the same symbol name so that the linker does the
dirty work.

-Matt

Reply via email to