On Thursday, 25 September 2014 at 21:43:53 UTC, monarch_dodra
wrote:
On Thursday, 25 September 2014 at 20:58:29 UTC, Gary Willoughby
wrote:
A few questions regarding GC.malloc.
When requesting a chunk of memory from GC.malloc am i right in
assuming that this chunk is scanned for pointers to other GC
resources in order to make decisions whether to collect them
or not?
By default, yes, but you can use BlkAttr.NO_SCAN if you do not
want that (eg, if you want to store integers). As a rule of
thumb, you can use hasIndirections!T to know if or if not to
scan (that's what most of phobos relies on).
Yep. It's generally just easier to do a "new T[]" when you want
a block to ensure that the proper flags are set, as GC.malloc is
conservative in terms of the flags it sets.
What does BlkAttr.FINALIZE do when used in the GC.malloc call?
I have no idea. I think its for classes though, since we
(currently) don't finalize structs anyways.
Yes it's for memory blocks containing class instances. It
basically tells the GC to call Object.~this() when collecting the
block.