On Thursday, 23 August 2012 at 11:40:22 UTC, Rory McGuire wrote:
On Thu, Aug 23, 2012 at 4:01 AM, Chad J
<chadjoan@__spam.is.bad__gmail.com>wrote:


Poolwise bitmap... what an interesting name. I'll look forward to
learning about the concepts behind it!


+1

Basically, the idea is to store information about what is and isn't a pointer at the pool level instead of at the block level. My attempt from a long time ago at precise heap scanning, and Antti-Ville's first attempt, stored meta-data at the end of every allocated block. This worked well for large arrays, but was terribly inefficient for smaller allocations and made the GC code even messier than it already is. The overhead was a fixed (void*).sizeof bits per block. Now, each pool has a bit array that contains one bit for every possible aligned pointer. The overhead is always 1 bit for every (void*).sizeof bytes no matter how large or small the block is.

Reply via email to