Memory Management in the Programming Language ICL
Original Publication Date: 1983-Nov-20
Included in the Prior Art Database: 2007-Mar-28
Software Patent Institute
Wawrzynek, John: AUTHOR [+2]
CALIFORNIA INSTITUTE OF TECHNOLOGY Computer Science Department
CALIFORNIA INSTITUTE OF TECHNOLOGY
Computer Science Department
Programming Language ICL
November 20, 1983
This is an internal working document of the Caltech Computer Science Department. Some of the ideas expressed in this document may be only partially developed or erroneous. All of the materials included are the property of Caltech and its sponsors. Distribution of this document outside the immediate working community is discouraged; publicationof this document is forbidden.
Copyright @ California institute of Technology, 1983
This paper presents the issues involved in iinplelllelltilig tlle prograillilli~lg lrrilguage ICL alid solne of the details of tl~e
iinplemeatatiori, with special enlpliasis on aspects of the data rila~iageltle~lt
system. While the
structures and slgorith~ns presented here apply to all implemenda6ions of ICL, tliey are particularly relevant
to tile VAX il~lplellielltatiol~.
This report is not intended to seive as an i~itroductioii to yrograliinling ill ICL
a conlyrelletisive guide to its implementation.
1.1 Iiltroductio~l to ICL
The prograalaiing language ICL provides a coherent hitegration of lilally uniclue and exyeril~leli~al fea-
tul-es. ICL is a liigller level language than most popular progra-lniiiiug lailguages in Illat it automatically lnallages niany tlli~igs whic1l are col~vei~tio~lally
left to the user. It is a stroilgly typed Iailguc~ge like PASCAL, but is in sorile ways very siiliilar to LISP. It provides automatic data swappisg slid has a garbage collector. Tlie conlpiler and loader are built in, illakirig the ICL system interactive . Tliere are no explicit poiliters a~id tllerefore no distiltctioli between objects and pointers as in sonle otlier languages. In ICL tlie user is provided with a work space on disk as a place to liold data and progranls between sessions.
An inlportai~t aspect of ICL, particularly with respect to memory nisnagement, is it policy of subjective default. k other Ianguages, such as PASCAL, when a data strlicture is nlodified all referelices or pointers to tlie data structure "see" the change, since the modification is iilade in place in the existing dsta structure.
This results in side effects and unpredictable results. ICL avoids the proble~il by using copy on write. When a cflange to a data structure is mde, a new copy of the structure is rliade wit11 tile change, and all old references to the original structure remain intact. Tlle implen~elitation is niade efficient by copyilig only that part of tlie structure wliicli is modified, with tlie renlaining sections left to be shared among all refereuces to the data structure, Through the use of small nodes to represent data struc...