Procedure linkage optimization working paper

This paper discusses the desirability of procedure linkage optimization and sketches a general theory of interpretive semantics which is motivated by technical problems in specifying and validating program transformations that optimize procedure linkages. One particular transformation is treated in detail.Recursive ALGOL 60 procedures sometimes pass parameters by name in such a way that the general thunk mechanism is unnecessary and inefficient. We present an optimization which detects this kind of call-by-name and implements it thunklessly. We prove that the transformation preserves semantics and we discuss the effect on running time and memory management.

[1]  Peter Wegner,et al.  The Vienna Definition Language , 1972, CSUR.

[2]  H. R. Strong Translating Recursion Equations into Flow Charts , 1971, J. Comput. Syst. Sci..

[3]  H. Raymond Strong,et al.  Characterizations of Flowchartable Recursions , 1973, J. Comput. Syst. Sci..

[4]  C. A. R. Hoare,et al.  A contribution to the development of ALGOL , 1966, CACM.

[5]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[6]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[7]  Robert L. Constable,et al.  On Classes of Program Schemata , 1972, SIAM J. Comput..

[8]  Wallace Feurzeig,et al.  Comments on the implementation of recursive procedures and blocks in ALGOL 60 , 1961, CACM.

[9]  William A. Wulf,et al.  BLISS: a language for systems programming , 1971, CACM.

[10]  Peter Zilahy Ingerman,et al.  Thunks: a way of compiling procedure statements with some comments on procedure declarations , 1961, CACM.

[11]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[12]  Niklaus Wirth,et al.  EULER: a generalization of ALGOL, and its formal definition: Part II , 1965, CACM.

[13]  Niklaus Wirth,et al.  EULER: A generalization of ALGOL and its formal definition: Part 1 , 1966, Commun. ACM.

[14]  Karel Culik A model for the formal definition of programming languages , 1972 .

[15]  John B. Johnston,et al.  The contour model of block structured processes , 1971, SIGP.