[Issue 3463] Integrate Precise Heap Scanning Into the GC

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Apr 14 14:50:27 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=3463



--- Comment #101 from Walter Bright <bugzilla at digitalmars.com> 2011-04-14 14:46:52 PDT ---
(In reply to comment #96)
> Anyway, this problem is taking care of in the implementation by nfxjfg,

His bitmap implementation consists of two bitmaps, one for all pointers and the
other for the subset that are ambiguous. There is one bit for each PTRSIZE
bytes.

Although that works, the difficulty with it is the potentially large amount of
static data this requires:

1. ambiguous pointers are pretty rare, so the second bitmap will be largely 0
2. non-pointer fields still consume space in the bitmaps
3. static arrays are fully fleshed out, so a large static array will have a
correspondingly large bitmap
4. large static arrays embedded in a struct with another pointer in them will
be fully fleshed out, even if there are no pointers in the array
5. there's no provision for reusing bitmaps for types embedded in aggregate
types, everything is repeated

This also applies at compile time, where one byte per pointer size for every
type is allocated.

I think the static size is important - take a look at the .map file of a
typical D app, and there's a lot of space consumed by the typeinfo data.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list