On Sat, 10 Jul 2010 18:17:21 -0400, Leandro Lucarella <l...@llucax.com.ar> wrote:

Robert Jacques, el 10 de julio a las 02:31 me escribiste:
As for the bug, it's actually somewhat old. Issue 2834 was filed
back in April of 09 - Struct Destructors are not called by the GC,
but called on explicit delete. And this is a bug in the spec, not
DMD; the only way to run struct destructors from the GC is to add
vtables to them or hidden in the GC (i.e. to make them classes).

You don't need a vtable, because you don't have inheritance with
structs. All you need is a function pointer pointing to the finalization
function/method. This plays well with the concept of having type
information associated to blocks of memory in the GC, which means
(semi)precise heap scanning. So maybe is not a bad idea to make the
destructors of structs get called by the GC :)


:) That's sort-of what I meant by a vtable. (Either it being one function or an actual table so structs could hook into the class finalization method.)

Reply via email to