[phobos] phobos commit, revision 1776

Sean Kelly sean at invisibleduck.org
Fri Jul 23 09:59:29 PDT 2010


Here's the signature:

extern (C) void rt_finalize(void* p, bool det = true)

"det" is true if it's a deterministic finalization (ie. not during a GC collection).  The function basically just calls __dtor and frees the monitor (and stomps on the memory with T.classinfo.init, as you requested).

If you look in src/rt/lifetime.d, _d_delclass() does a bit more by calling the custom deallocator, etc, though I think that's all destined for removal?

On Jul 23, 2010, at 7:33 AM, Andrei Alexandrescu wrote:

> I thought __dtor() does everything needed. Seems like I was mistaken? Sean, how do I call rt_finalize?
> 
> Andrei
> 
> Sean Kelly wrote:
>> Why not just call rt_finalize?  How an object is finalized may vary by compiler. Sent from my iPhone
>> On Jul 23, 2010, at 2:17 AM, Max Samukha <maxsamukha at gmail.com> wrote:
>>> The implementation is still incomplete. It doesn't call base class dtors. This unittest should pass:
>>> 
>>> unittest
>>> {
>>>    class A { static bool dead; ~this() { dead = true; } }
>>>    class B : A { static bool dead; ~this() { dead = true; } }
>>>    {
>>>        auto b = scoped!B;
>>>    }
>>>    assert(B.dead);
>>>    assert(A.dead);
>>> }
>>> 
>>> A less severe problem is that it doesn't delete the object's monitor if one was allocated.
>>> 
>>> Please refer to rt_finalize for correct destruction sequence. Essentially, Scoped dtor should do what rt_finalize does except there is no need to catch destructor exceptions and I'm not sure about collectHandler. Sean, please comment?
>>> _______________________________________________
>>> phobos mailing list
>>> phobos at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/phobos
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos



More information about the phobos mailing list