Garbage Collection for Strongly - Typed Languagesusing Run - time Type

نویسندگان

  • Shail Aditya
  • Christine H. Flood
  • James E. Hicks
چکیده

Garbage collectors perform two functions: live-object detection and dead-object reclamation. In this paper, we present a new technique for live-object detection based on run-time type reconstruction for a strongly-typed, polymorphic language. This scheme uses compile-time type information together with the run-time tree of activation frames to determine the exact type of every object participating in the computation. These reconstructed types are then used to identify and traverse the live heap objects during garbage collection. We describe an implementation of our scheme for the Id parallel programming language compiled for the *T multi-processor architecture. We present simulation studies that compare the performance of type-reconstructing garbage collection with conservative garbage collection and compiler-directed storage reclamation. 1 Introduction Dynamic memory management is an integral component of modern programming languages such as C++, Common Lisp, SML, and Haskell that support the notion of a globally shared heap of objects. It is possible to manage the heap memory explicitly by means of explicit allocation and deallocation calls, but usually it is more convenient to use a separate garbage collector that reclaims storage once it is no longer in use. In such cases, the overall performance of the user program depends heavily on the choice of garbage collection technique and its run-time performance. Abstractly, a garbage collector performs two functions: it distinguishes live objects from those that are garbage (live-object detection), and it reclaims the storage allocated to objects that are garbage (dead-object reclamation). For live-object detection, the garbage collector must be able to distinguish scalar objects from heap objects and determine their sizes (object identiication). Conventional techniques for object identiication 3, 5] operate with a very simple memory model and make little or no use of language and compiler-speciic information. In this paper, we present a new technique for object identiication based on run-time \type reconstruction" for polymorphic languages 1]. Our scheme bridges the gap between the compiler and the garbage collector by using compiler-generated, polymorphic type information and the dynamic call tree of activation frames to compute the exact run-time types of all

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Garbage Collection for Strongly-typed Languages Using Run-time Type Reconstruction Garbage Collection for Strongly-typed Languages Using Run-time Type Reconstruction

Garbage collectors perform two functions: live-object detection and dead-object reclamation. In this paper, we present a new technique for live-object detection based on run-time type reconstruction for a strongly-typed, polymorphic language. This scheme uses compile-time type information together with the run-time tree of activation frames to determine the exact type of every object participat...

متن کامل

Compile-Time Garbage Collection in Typed Smalltalk

This paper describes how Typed Smalltalk can be augmented with an eeect system that will allow the TS compiler to determine when objects may be allocated on the stack rather than the heap, thus reducing and in many cases eliminating the need for run-time garbage collection.

متن کامل

Functional encapsulation and type reconstruction in a strongly-typed, polymorphic language

Static type systems are traditionally used to prevent run-time type-errors in user programs and to assign appropriate storage representations to objects during compilation. In this thesis, we explore some new ways of using static type information in the design, compilation, and execution of programs written in a strongly-typed, polymorphic language. Programmers often nd it useful to know whethe...

متن کامل

Don’t Stop the BIBOP: Flexible and Efficient Storage Management for Dynamically Typed Languages

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

متن کامل

Don't Stop the BIBOP: Flexible and E cient Storage Management for Dynamically-Typed Languages

This paper describes a storage management system that is exible and eecient. The representation of run-time tags yields fast allocation, type testing, and eld 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...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1994