next up previous
Next: About this document Up: SPIN Storage Management Issues Previous: M3 passing compiler

Plan of Action

  1. Obsolete the unstrong reference interface.

  2. Change the m3 collector to scan the untraced heap and treat it is source of ambiguous roots.

  3. Change the m3 collector to remove strong reference if there are no ambiguous roots to the data. This effectively mobilizes the data, allowing the collector to defragment the heap.

  4. Change the m3 collector to delete the data if there are no ambiguous roots and there are no references from the traced heap. Note that at this point the strong reference will already have been removed by the above point.

  5. Change the m3 compiler to automatically create a strong reference when passing traced data to GC unsafe modules. I.e., a call to the above Enqueue() procedure would automatically emit code to create a strong reference to the que head and que arguments.

  6. Change the m3 compiler to emit warnings when using untraced references in safe module.

  7. Change compiler to disallow allocation of untraced data in safe module.

  8. Allocate all data out of the traced heap and rely on the garbage collector.

  9. Change layout of typeheader for traced data. Don't just prepend it, but instead use a hash function to locate it, for example.

  10. Obsolete M3 UNTRACED REF type, eliminating memory dichotomy.



next up previous
Next: About this document Up: SPIN Storage Management Issues Previous: M3 passing compiler



Marc Fiuczynski
Thu Dec 28 15:39:17 PST 1995