We have developed a methodology for transforming garbage
collection-dependent algorithms, shared object implementations and/or
concurrent software mechanisms into a form that does not presume the
existence of an independent, or execution environment provided, garbage
collector. Algorithms, shared object implementations and/or mechanisms
designed or transformed using techniques described herein provide
explicit reclamation of storage using lock-free pointer operations.
Transformations can be applied to lock-free algorithms and shared object
implementations and preserve lock-freedom of such algorithms and
implementations. As a result, existing and future lock-free algorithms
and shared object implementations that depend on a garbage-collected
execution environment can be exploited in environments that do not
provide garbage collection. Furthermore, algorithms and shared object
implementations that employ explicit reclamation of storage using
lock-free pointer operations such as described herein may be employed in
the implementation of a garbage collector itself.