Tags and type checking in LISP: hardware and software approaches

  • Authors:
  • Peter Steenkiste;John Hennessy

  • Affiliations:
  • Stanford Univ., Stanford, CA;Stanford Univ., Stanford, CA

  • Venue:
  • ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
  • Year:
  • 1987

Quantified Score

Hi-index 0.00

Visualization

Abstract

One of the major factors that distinguishes LISP from many other languages (Pascal, C, Fortran, etc.) is the need for run-time type checking. Run-time type checking is implemented by adding to each data object a tag that encodes type information. Tags must be compared for type compatibility, removed when using the data, and inserted when new data items are created. This tag manipulation, together with other work related to dynamic type checking and generic operations, constitutes a significant component of the execution time of LISP programs. This has led both to the development of LISP machines that support tag checking in hardware and to the avoidance of type checking by users running on stock hardware. To understand the role and necessity of special-purpose hardware for tag handling, we first measure the cost of type checking operations for a group of LISP programs. We then examine hardware and software implementations of tag operations and estimate the cost of tag handling with the different tag implementation schemes. The data shows that minimal levels of support provide most of the benefits, and that tag operations can be relatively inexpensive, even when no special hardware support is present.