crystal clear()

Steven Schveighoffer schveiguy at yahoo.com
Fri Sep 17 15:18:00 PDT 2010


On Fri, 17 Sep 2010 18:15:58 -0400, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

> On Fri, 17 Sep 2010 18:11:11 -0400, Steven Schveighoffer  
> <schveiguy at yahoo.com> wrote:
>
>> On Fri, 17 Sep 2010 18:07:54 -0400, Andrei Alexandrescu  
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> On 09/17/2010 04:55 PM, Steven Schveighoffer wrote:
>>>> On Fri, 17 Sep 2010 17:33:11 -0400, Andrei Alexandrescu
>>>> <SeeWebsiteForEmail at erdani.org> wrote:
>>>>
>>>>> I think clear() can be fixed if we remove the call to the constructor
>>>>> AND obliterate the vptr.
>>>>
>>>> agreed.
>>>
>>> One more thing: we need to change the call to the destructor to check  
>>> the vptr. If the vptr is null, no call to the destructor. Where is  
>>> that piece of code? Couldn't find it by grepping for __dtor.
>>
>> lifetime.d?  Looks like it might already check for null classinfo ;)
>>
>> http://www.dsource.org/projects/druntime/browser/trunk/src/rt/lifetime.d#L1002
>
> Wait, I don't know enough about object I think.  Is there ClassInfo  
> *and* vtable in the object?  Probably...

Nevermind, it looks like rt_finalize is already doing something similar in  
the finally clause.  So it looks like vptr's first member is the classinfo.

Is there a map somewhere of what the hidden data in an object looks like?

-Steve


More information about the Digitalmars-d mailing list