|
ABSTRACT
Many control and access environment structures require that storage for a procedure activation exist at times when control is not nested within the procedure activated. This is straightforward to implement by dynamic storage allocation with linked blocks for each activation, but rather expensive in both time and space. This paper presents an implementation technique using a single stack to hold procedure activation storage which allows retention of that storage for durations not necessarily tied to control flow. The technique has the property that, in the simple case, it runs identically to the usual automatic stack allocation and deallocation procedure. Applications of this technique to multitasking, coroutines, backtracking, label-valued variables, and functional arguments are discussed. In the initial model, a single real processor is assumed, and the implementation assumes multiple-processes coordinate by passing control explicitly to one another. A multiprocessor implementation requires only a few changes to the basic technique, as described.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Bobrow, D.G. Storage management in Lisp. In Symbol Manipulation Languages and Techniques, Bobrow (Ed.), North- Holland Pub. Co., Amsterdam, 1968.
|
 |
2
|
|
 |
3
|
|
| |
4
|
Dijkstra, E.W. Co-operating sequential processes. In Programm#lg Languages, Genuys (Ed.), Academic Press, New York, 1967.
|
| |
5
|
Dijkstra, E.W. Recursive programming. Num. Math. 2 (1960), 312-318. Also in Programming Systems and Languages, S. Rosen (Ed.), McGraw-Hill, New York, 1967.
|
 |
6
|
|
 |
7
|
|
 |
8
|
|
 |
9
|
|
| |
10
|
Hewitt, C. PLANNER: A language for manipulating models and proving theorems in a robot. Proc. Internat. Joint Conf. on Artif. lntell. Washington, D.C., May 1969.
|
| |
11
|
IBM System/360, PL/I Language Reference Manual, Form C28-8201-2, IBM (1969).
|
| |
12
|
Johnston, J.B. The contour model of block structured processes. in Tou and Wegner {23}, pp. 55-82.
|
| |
13
|
|
| |
14
|
|
| |
15
|
|
 |
16
|
|
 |
17
|
Charles J. Prenner , Jay M. Spitzen , Ben Wegbreit, An implementation of backtracking for programming languages, Proceedings of the ACM annual conference, p.763-771, August 01-01, 1972, Boston, Massachusetts, United States
[doi> 10.1145/800194.805856]
|
| |
18
|
Prenner, C. Multi-path control structures for programming languages. Ph.D. Th., Harvard U., Cambridge, Mass. May 1972.
|
| |
19
|
Quam, L. Lisp 1.6 Ref. Manual. Stanford AI Lab.
|
 |
20
|
|
| |
21
|
Sussman, G.J., and McDermott, D. Why conniving is better than planning. Proc. AFIPS 1972 FJCC, Vol. 41, Part 2, AFIPS Press, Montvale, N.J., pp. 1171-1179.
|
| |
22
|
Thomas, R.H. A model for process representation and synthesis. Ph.D. Th., Proj. MAC Rept. TR-87, M.I.T. Cambridge, Mass., 1971.
|
| |
23
|
Tou, J., and Wegner, P. (Eds.) Sigplan Notices--Proc. Symp. on Data Structures in Prog. Lang., 6, 2 (Feb. 1971).
|
| |
24
|
|
| |
25
|
Wegbreit, B. Studies in extensible programming languages. Ph.D. Th., Harvard U., Cambridge, Mass. May 1970.
|
| |
26
|
Wegbreit, B. The ECL programming system. Proc. AFIPS 1971 FJCC, Vol. 39, AFIPS Press, Montvale, N.J., pp. 253-262.
|
| |
27
|
Wegner, P. Data structure models for programming languages. in Tou and Wegner {23}, pp. 55-82.
|
| |
28
|
Weizenbaum, J. The funarg problem explained. M.I.T., Cambridge, Mass., Mar. 1968.
|
CITED BY 54
|
|
Guy Lewis Steele, Jr. , Gerald Jay Sussman, The dream of a lifetime: A lazy variable extent mechanism, Proceedings of the 1980 ACM conference on LISP and functional programming, p.163-172, August 25-27, 1980, Stanford University, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U. Honschopp , W. M. Lippe , F. Simon, Compiling functional languages for von Neumann machines, Proceedings of the 1983 ACM SIGPLAN symposium on Programming language issues in software systems, p.22-27, June 27-29, 1983, San Francisco, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Julian Padget , Jérôme Chailloux , Thomas Christaller , Ramon DeMantaras , Jeff Dalton , Matthieu Devin , John Fitch , Timm Krumnack , Eugen Neidl , Eric Papon , Stephen Pope , Christian Queinnec , Luc Steels , Herbert Stoyan, Desiderata for the standardization of LISP, Proceedings of the 1986 ACM conference on LISP and functional programming, p.54-66, August 1986, Cambridge, Massachusetts, United States
|
|
|
|
|
|
|
|
|
Cyril N. Alberga , Chris Bosman-Clark , Martin Mikelsons , Mary S. Van Deusen , Julian Padget, Experience with an uncommon Lisp, Proceedings of the 1986 ACM conference on LISP and functional programming, p.39-53, August 1986, Cambridge, Massachusetts, United States
|
|
|
|
|
|
Raymond L. Bates , David Dyer , Johannes A. G. M. Koomen, Implementation of Interlisp on the VAX, Proceedings of the 1982 ACM symposium on LISP and functional programming, p.81-87, August 15-18, 1982, Pittsburgh, Pennsylvania, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rob von Behren , Jeremy Condit , Feng Zhou , George C. Necula , Eric Brewer, Capriccio: scalable threads for internet services, Proceedings of the nineteenth ACM symposium on Operating systems principles, October 19-22, 2003, Bolton Landing, NY, USA
|
|
|
Dianne E. Britton , Frederick C. Druseiks , Ralph E. Griswold , David R. Hanson , Richard A. Holmes, Procedure referencing environments in SL5, Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages, p.185-191, January 19-21, 1976, Atlanta, Georgia
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bhuvan Middha , Matthew Simpson , Rajeev Barua, MTSS: multi task stack sharing for embedded systems, Proceedings of the 2005 international conference on Compilers, architectures and synthesis for embedded systems, September 24-27, 2005, San Francisco, California, USA
|
|
|
|
|
|
Surupa Biswas , Thomas Carley , Matthew Simpson , Bhuvan Middha , Rajeev Barua, Memory overflow protection for embedded systems using run-time checks, reuse, and compression, ACM Transactions on Embedded Computing Systems (TECS), v.5 n.4, p.719-752, November 2006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INDEX TERMS
Keywords:
FUNARG problem,
access environments,
backtracking,
control structures,
coroutines,
dendrarchy,
dynamic storage allocation,
environments,
extensible control structures,
functional arguments,
label-valued variables,
multiprocessor systems,
multitasking,
retention,
stack allocation
|