A system and method for facilitating unmanaged code participation in a
memory management system employing a garbage collection system or service
is provided. The invention provides for an unmanaged component to invoke a
machine state capturing component that captures machine state (e.g.,
machine registers and stack pointer) into a machine state data structure
and publishes the fact that the unmanaged component desires to participate
in garbage collection pointer enumeration. The invention further provides
for an unwind component to be invoked during garbage collection that
determines register value(s) to facilitate participation in garbage
collection pointer enumeration by the unmanaged component. As part of its
participation in garbage collection, the unwind component can alter
contents of the machine state data structure stored by the machine state
capturing component. The invention further provides for an unmanaged
component to invoke a machine state restoring component that restores the
machine state (e.g., machine registers and stack pointer) saved by the
machine state capturing component, which may have been altered by garbage
collection, and to publish the fact that the unmanaged component no longer
desires to participate in garbage collection pointer enumeration.
Un système et une méthode pour faciliter unmanaged la participation de code à un système de gestion de mémoire utilisant un système de collection d'ordures ou le service est fourni. L'invention prévoit unmanaged le composant pour appeler un composant de serrage d'état de machine qui capture l'état de machine (par exemple, les registres de machine et l'indicateur de pile) dans une structure de données d'état de machine et édite le fait qu'unmanaged des désirs composants de participer à l'énumération d'indicateur de collection d'ordures. L'invention autre prévoit un composant de déroulement à appeler pendant la collection d'ordures qui détermine le value(s) de registre pour faciliter la participation à l'énumération d'indicateur de collection d'ordures par unmanaged le composant. En tant qu'élément de sa participation à la collection d'ordures, le composant de déroulement peut changer le contenu de la structure de données d'état de machine stockée par le composant de serrage d'état de machine. L'invention autre prévoit unmanaged le composant pour appeler un état de machine reconstituant le composant qui reconstitue l'état de machine (par exemple, les registres de machine et l'indicateur de pile) sauvé par le composant de serrage d'état de machine, qui a pu avoir été changé par la collection d'ordures, et pour éditer le fait qu'unmanaged le composant ne désire plus participer à l'énumération d'indicateur de collection d'ordures.