On 03/08/2013 01:17 AM, Walter Bright wrote:
On 1/2/2012 11:20 AM, Martin Nowak wrote:
  - Libraries might not be unloaded as long as GC collected class
instances
still exist because
    finalization fails otherwise.

D doesn't guarantee that finalizers will run on GC allocated objects.
Therefore, when unloading a dll:

1. run a gc collection
2. for all objects remaining on the heap
        if they have a finalizer and that finalizer points into the dll
code
             mark them as not having a finalizer

Yeah, that's the pragmatic solution. I don't really like the 2. point though but that won't be a problem with the current GC.
It also avoids the false pointer problems of the GC.trackRange approach.

Reply via email to