Next step on reference counting topics

Ethan via Digitalmars-d digitalmars-d at puremagic.com
Thu May 15 03:50:36 PDT 2014


I've been trying to think of a solution to use over here at 
Remedy for making the garbage collector reference count 
allocations instead of the current scan method (even with Rainer 
Schütze's GC it still does a scan, and I'd feel much more 
comfortable not having to schedule a GC collection somewhere in 
our update loop).

I've totally missed the other threads on reference counting, but 
should reference counting be a part of some library that you can 
optionally use or should the garbage collector hide all that from 
you?

My thinking on the subject is that you only need one additional 
function added to the garbage collector that handles pointer 
assignments. The parameters are a ref to the pointer you're 
assigning to, and the new pointer. The GC would then decrement 
the reference count for the memory referenced by the pointer 
you're assigning to, and increment the reference count fr the new 
memory referenced.

This, I imagine, would fit neatly in with slices and classes 
equally. It would also be optional - the current default GC 
wouldn't do anything with the function and . The downside is that 
a pointer assign would invoke a GC call and that it would still 
need to deal with circular dependencies in some fashion (however 
dealing with that at an allocation level rather than a class 
level seems potentially less problematic to me).

If this is beyond the scope of this thread, I'll start up a new 
one to discuss all the potential pitfalls and problems that could 
be encountered. I haven't had any time to actually do research in 
to it or trial it yet.


More information about the Digitalmars-d mailing list