Leandro Lucarella wrote:
Andrei Alexandrescu, el 19 de octubre a las 08:38 me escribiste:
For relatively large chunks of memory, the GC keeps a control block.
We could add a member size_t requestedSize that keeps the size that
was requested with an allocation/reallocation call. The GC can take
initiative in overallocating memory and expose primitives such as
requestedSize (how much did the program ask for?) and capacity (how
much is really allocated?). With that API, it is possible to
implement ~= efficiently.
That would mean moving the overhead of arrays to the GC, but that overhead
will be present for *all* objects, arrays or not, so I don't think it will
be a good idea...
I forgot to mention that ~= would also have a means to communicate the
GC to overallocate. My point is simple: the problem is that slices don't
store enough info. That info could get in the memory control block.
Having that information could be used if present though, for example, to
avoid scanning chunks of memory that are not used. That could help
avoiding false positives (if that chunks of memory are not zeroed
already).
Good point.
Andrei