Browse Prior Art Database

Memory Management in the Programming Language ICL Disclosure Number: IPCOM000147849D
Original Publication Date: 1983-Nov-20
Included in the Prior Art Database: 2007-Mar-28
Document File: 20 page(s) / 1M

Publishing Venue

Software Patent Institute

Related People

Wawrzynek, John: AUTHOR [+2]



This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 8% of the total text.

Page 1 of 20


Computer Science Department

  Memory Management
in the
Programming Language ICL

John Wawrzynek

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 page contains 1 picture or other non-text object]

Page 2 of 20

[This page contains 1 picture or other non-text object]

Page 3 of 20

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