clr/src/vm/appdomain.cpp pre-allocates some exceptions in SystemDomain::CreatePreallocatedExceptions() by calling CreateHandle() then StoreObjectInHandle(). They boil down into calls to clr/src/vm/objecthandle.cpp. The GC calls objecthandle.cpp's Ref_TraceNormalRoots() from within CNameSpace::GcScanHandles() in gcscan.cpp, to enumerate these objects.
For strings, clr/src/vm/appdomain.cpp's SystemDomain::Init() constructs a thing called the GlobalStringLiteralMap. See clr/src/vm/stringliteralmap.cpp for its implementation details. It looks like the m_LargeHeapHandleTable is implemented in appdomain.cpp. This posting is provided "AS IS" with no warranties, and confers no rights. Barry -----Original Message----- From: Discussion of the Rotor Shared Source CLI implementation [mailto:[EMAIL PROTECTED] On Behalf Of Anderson, Todd A Sent: Tuesday, December 30, 2003 10:48 AM To: [EMAIL PROTECTED] Subject: [DOTNET-ROTOR] Rotor root set enumeration question. Does anybody know how Rotor enumerates the roots for things like preallocated exceptions and especially for string literals? String literals seem to be allocated through the GC memory allocation routines but I don't see where/how those roots are enumerated at collection time. thanks, Todd =================================== This list is hosted by DevelopMentor(r) http://www.develop.com NEW! ASP.NET courses you may be interested in: 2 Days of ASP.NET, 29 Sept 2003, in Redmond http://www.develop.com/courses/2daspdotnet Guerrilla ASP.NET, 13 Oct 2003, in Boston http://www.develop.com/courses/gaspdotnet View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentorŪ http://www.develop.com NEW! ASP.NET courses you may be interested in: 2 Days of ASP.NET, 29 Sept 2003, in Redmond http://www.develop.com/courses/2daspdotnet Guerrilla ASP.NET, 13 Oct 2003, in Boston http://www.develop.com/courses/gaspdotnet View archives and manage your subscription(s) at http://discuss.develop.com