LISP and Symbolic Computation, 3(1)13-20

Direct Function Calls in Lisp

Benjamin Zorn Paul Hilfinger, Computer Science Division, University of California, Berkeley, CA 94720

Abstract: This paper compares implementation strategies for function calls in compiled Lisp. We discuss various ways of allowing compiled call instructions to branch immediately to a callee's code (direct calls), rather than to refer to a symbol that points to the function's definition (indirect calls). We examine the performance of direct and indirect function calls on the VAX and MC68020, and on a RISC architecture--the SPUR multiprocessor. For the SPUR architecture, single indirection slows applications by 3-4%, and double indirection slows applications by 6-8%. The performance benefits of direct function calls are considerably smaller for the VAX and MC68020 architectures. We discuss also the costs and complexities involved in implementing direct function calls.

Keywords: function calls, functions, Lisp implementation

This article is not available online.
[picture of journal cover]

March 2003 - hosc@brics.dk