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.

Reply via email to