Skip to main content

Call Forwarding: A Simple Low-Level Code Optimization Technique

  • Chapter
Implementations of Logic Programming Systems

Abstract

This paper discusses call forwarding, a simple interprocedural optimization technique for dynamically typed languages. The basic idea behind the optimization is very simple: generate multiple entry points for procedures such that a call to a procedure can be directed to the appropriate entry point, bypassing unnecessary code wherever possible. As shown by our experimental results, this simple optimization can be surprisingly effective, and lead to significant Derformance improvements.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

eBook
USD 16.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A. V. Aho, R. Sethi and J. D. Ullman, Compilers — Principles, Techniques and Tools, Addison-Wesley, 1986.

    Google Scholar 

  2. M. Carlsson and J. Widen. SICStus Prolog User’s Manual. Swedish Institute of Computer Science, Oct. 1988.

    Google Scholar 

  3. C. Chambers and D. Ungar. Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically Typed Object-Oriented Programs. Proc. SIGPLAN’ 90 Conference on Programming Language Design and Implementation, White Plains, NY, June 1990, pp. 150–164. SIGPLAN Notices vol. 25 no. 6.

    Google Scholar 

  4. C. Chambers, D. Ungar and E. Lee. An Efficient Implementation of SELF, A Dynamically Typed Object-Oriented Language Based on Prototypes. Proc. OOPSLA’ 89, New Orleans, LA, 1989, pp. 49–70.

    Google Scholar 

  5. K. De Bosschere, S. K. Debray, D. Gudeman, and S. Kannan. Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages. Proc. 21st ACM Symposium on Principles of Programming Languages, Portland, Oregon, Jan 1994 (to appear).

    Google Scholar 

  6. I. Foster and S. Taylor. Strand: A Practical Parallel Programming Tool. Proc. 1989 North American Conference on Logic Programming, Cleveland, Ohio, Oct. 1989, pp. 497–512. MIT Press.

    Google Scholar 

  7. A. Goldberg and D. Robson. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.

    Google Scholar 

  8. D. Gudeman, K. De Bosschere, and S. K. Debray. j c: An Efficient and Portable Implementation of Janus. Proc. Joint International Conference and Symposium on Logic Programming, Washington DC, Nov. 1992, pp. 399–413. MIT Press.

    Google Scholar 

  9. V. Saraswat, K. Kahn, and J. Levy. Janus: A step towards distributed constraint programming, in Proc. 1990 North American Conference on Logic Programming, Austin, TX, Oct. 1990, pp. 431–446. MIT Press.

    Google Scholar 

  10. J. T. Schwartz, R. B. K. Dewar, E. Dubinsky, and E. Schonberg. Programming with Sets: An Introduction to SETL. Springer-Verlag, 1986.

    Google Scholar 

  11. G. L. Steele Jr. Common Lisp: The Language. Digital Press, 1984.

    Google Scholar 

  12. K. Ueda. Guarded Horn Clauses, in Concurrent Prolog: Collected Papers, vol. 1, ed. E. Shapiro, pp. 140–156, 1987. MIT Press.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1994 Springer Science+Business Media New York

About this chapter

Cite this chapter

Debray, S.K., De Bosschere, K., Gudeman, D. (1994). Call Forwarding: A Simple Low-Level Code Optimization Technique. In: Tick, E., Succi, G. (eds) Implementations of Logic Programming Systems. Springer, Boston, MA. https://doi.org/10.1007/978-1-4615-2690-2_6

Download citation

  • DOI: https://doi.org/10.1007/978-1-4615-2690-2_6

  • Publisher Name: Springer, Boston, MA

  • Print ISBN: 978-1-4613-6157-2

  • Online ISBN: 978-1-4615-2690-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics