[phobos] phobos commit, revision 1776
Andrei Alexandrescu
andrei at erdani.com
Fri Jul 23 10:19:13 PDT 2010
Yup, found that and stole all I could from it. The nice thing about
scoped() is that it knows exactly the type it needs to destroy (the
dynamic type == the static type) so it doesn't need to access the
ClassInfo etc. It statically walks up the inheritance tree and destroys
everything in sight. Then it destroys that mutex thing.
Thanks,
Andrei
Sean Kelly wrote:
> 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
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
More information about the phobos
mailing list