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
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