Here is the block diagram that I referred to:

http://staff.develop.com/jasonw/weblog/rotorobject.jpg

This shows the relationships between the various structures that you
will encounter within the rotor codebase.

> -----Original Message-----
> From: Discussion of the Rotor Shared Source CLI
> implementation [mailto:[EMAIL PROTECTED] On
> Behalf Of David Stutz
> Sent: Wednesday, April 02, 2003 9:26 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [DOTNET-ROTOR] types in the CLR
>
>
> The relationships of the different structures are a little
> bit complex; we've written a lot of this kind of detail down
> in the book "Shared Source CLI Essentials" from O'Reilly that
> is now available. In particular, there is a map that shows
> the relationship of all of the various type and object
> headers that would probably be valuable to you. If I'm not
> mistaken, this map is also online, but I am on the road right
> now and can't remember the URL. Anyone else on this list able
> to jog my memory?
>
> -- David
>
> > -----Original Message-----
> > From: Discussion of the Rotor Shared Source CLI implementation
> > [mailto:[EMAIL PROTECTED] On Behalf Of Michael Cohen
> > Sent: Wednesday, April 02, 2003 7:50 AM
> > To: [EMAIL PROTECTED]
> > Subject: [DOTNET-ROTOR] types in the CLR
> >
> >
> > Hi,
> >
> > I've been doing some research on the shared source CLI (Rotor),
> > specifically looking at how types that are loaded in the CLR are
> > represented. From my current understanding, every type that
> is loaded
> > into an application domain by the ClassLoader class is
> represented by
> > an EEClass [class.h]. Each EEClass has a pointer to a MethodTable
> > class [class.h] that stores the v-table and a map to
> interfaces that
> > the class inherits from. So the MethodTable is basically what
> > defines a type in memory.
> >
> > >From my understanding, when an instance of a type is
> instantiated, a
> > >new Object class [object.h] is created that represents the
> > instance of
> > >the type. This Object also contains a pointer to the MethodTable.
> >
> > To help further my understanding of how types are laid out
> in memory I
> > read Don Box's book "Essential .NET Volume 1: The Common Language
> > Runtime". On page 80, Box proceeds to explain the CLR object header
> > and a structure called the CORINFO_CLASS_STRUCT.
> >
> > The object header contains a sync block, a handle representing the
> > object's type, and the object's fields. I did find an
> ObjHeader class
> > [syncblk.h] that contains a member called m_SyncBlockValue, but it
> > does not contain a handle or array of fields. Does anyone
> know how the
> > ObjHeader class, Object class, and fields are actually laid out in
> > memory and also where this occurs in Rotor? My guess is that
> > the type handle is the pointer in the Object class pointing
> > back to the MethodTable.
> >
> > Box explains that the CORINFO_CLASS_STRUCT structure
> contains several
> > pieces of information that defines the type. The type handle in the
> > object header points to this structure. Within Rotor, I found a
> > COR_INFO_CLASS_HANDLE [corinfo.h] that is typed defined as struct
> > CORINFO_CLASS_STRUCT_*. Based on this newfound knowledge,
> I've become
> > a little confused about how the CORINFO_CLASS_HANDLE and the
> > MethodTable class are related to each other. Does anyone know the
> > details of how the CORINFO_CLASS_HANDLE is used in the
> runtime and how
> > it relates to the MethodTable class?
> >
> > Finally, when there is a managed reference to an object in the
> > runtime's managed heap, is the reference wrapped in the OBJECTREF
> > class [vars.hpp]? The OBJECTREF class does contain a
> pointer m_asObj
> > that points to an Object class.
> >
> > Thanks in advance to anyone that can help me.
> >
> > Michael Cohen
> >
> >
> > --------------------------------------------------------------
> > --------------
> > This electronic message transmission contains information
> that may be
> > confidential or privileged.  The information contained herein is
> > intended solely for the recipient and use by any other party is not
> > authorized.  If you are not the intended recipient (or otherwise
> > authorized to receive this message by the intended recipient), any
> > disclosure, copying, distribution or use of the contents of the
> > information is prohibited.  If you have received this electronic
> > message transmission in error, please contact the sender by reply
> > email and delete all copies of this message.  Cigital, Inc.
> > accepts no responsibility for any loss or damage resulting
> > directly or indirectly from the use of this email or its
> > contents. Thank You.
> > --------------------------------------------------------------
> > --------------
> >
> >
>
>

Reply via email to