Abstract

This paper describes a storage management system that is flexible and efficient. The representation of run-time tags yields fast allocation, type testing, and field extraction, and the memory model reduces virtual memory paging during garbage collection. The storage management system coexists gracefully with other languages' run-time systems, facilitating the use of multiple languages within a single program. No special support from the operating system or virtual memory manager is required beyond the ability to obtain additional memory on demand. The system incorporates a generational garbage collector with a tunable number of dynamically-resizable generations. The collector handles large objects efficiently, supports collection of incrementally-compiled code, supports weak pairs, and allows stacks to contain nonpointer data. The system's hybrid type representation employs typed pointers and typed objects for tagging individual objects, and BIBOP typing for classifying objects accordi...