A general approach to the optimization of function calls

  • Kay-Ulrich Felgentreu
  • Wolfram-Manfred Lippe
Optimized Language Implementation
Part of the Lecture Notes in Computer Science book series (LNCS, volume 213)


This paper presents a general approach to the optimization of function calls. We define the class of "low cost function calls" and introduce a technique of detecting and executing these calls in a modified shallow binding system known as "standardized shallow binding". We show that by this technique the overhead expenses of changing environments for low cost calls are nearly cut down to zero. The new method can be applied to any imperative or applicative language. In this paper statically scoped LISP is taken as an example; it is shown how the technique has been applied in the implementation of a LISP interpreter. We also prove that our method exceeds a number of optimizations that have been proposed recently.


Function Call Overhead Expense Shallow Binding Recursive Function Call Tail Recursive Function 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. [Ba78]
    Baker, H. G. Shallow Binding in LISP 1.5 CACM, Vol. 21 No. 7, pp. 565–569, July 1978Google Scholar
  2. [Ba80]
    Bauchrowitz, N. Vergleich einer operationellen mit einer denotationellen Semantik für LISP Diplomarbeit am Institut für Informatik und Praktische Mathematik der Universität Kiel, 1980Google Scholar
  3. [Fe84]
    Felgentreu, K.-U. Implementierung eines schnellen LISP-Interpretierers Diplomarbeit am Institut für Informatik und Praktische Mathematik der Universität Kiel, February 1984Google Scholar
  4. [Fe85]
    Felgentreu, K.-U. Decidability Problems concerning the Optimization of Function Calls Bericht Nr. 3/85-I, Institut für Instrumentells Mathematik der Universität Münster, 1985Google Scholar
  5. [Fe/Li86]
    Felgentreu, K.-U., Lippe, W.-M. Dynamic Optimization of Covered Tail Recursive Functions in Applicative Languages (to appear in the Proceedings of the ACM Computer Science Conference February 1986)Google Scholar
  6. [Fe/Li/Si86]
    Felgentreu, K.-U., Lippe, W.-M., Simon, F. Optimizing Static Scope LISP by Repetitive Interpretation of Recursive Function Calls (to appear in IEEE Transactions on Software Engineering)Google Scholar
  7. [Gr78]
    Greussay, P. Iterative Interpretation of Tail-Recursive LISP Procedures in Ecole de la Recherche, Universite de Paris, 1978Google Scholar
  8. [La73]
    Langmaack, H. On correct Procedure Parameter Transmission in Higher Programming Languages Acta Informatica 2, p. 110–142, 1973Google Scholar
  9. [Li/Si79]
    Lippe, W.-M., Simon, F. LISP/N — Basic Definitions and Properties Bericht Nr. 4/79, Institut für Informatik und Praktische Mathematik, Universität Kiel, Oktober 1979Google Scholar
  10. [McC66]
    McCarthy, J., et. al. LISP 1.5 Programmer's Manual MIT Press, Cambridge, Massachusetts, 1966Google Scholar
  11. [Pe78]
    Perrot, J. F. Principes d'implementation de processus recursifs in Ecole de la Recherche, Universite de Paris, 1978Google Scholar
  12. [Sa-Ja84]
    Saint-James, E. Recursion is more efficient than Iteration Conference Record of the 1984 ACM Symposium on LISP and Functional Programming, August 1984Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1986

Authors and Affiliations

  • Kay-Ulrich Felgentreu
    • 1
  • Wolfram-Manfred Lippe
    • 1
  1. 1.Institut für Numerische und instrumentelle Mathematik der Universität MünsterMünster

Personalised recommendations