Inline Caching Meets Quickening

  • Stefan Brunthaler
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6183)


Inline caches effectively eliminate the overhead implied by dynamic typing. Yet, inline caching is mostly used in code generated by just-in-time compilers. We present efficient implementation techniques for using inline caches without dynamic translation, thus enabling future interpreter implementers to use this important optimization technique—we report speedups of up to a factor of 1.71—without the additional implementation and maintenance costs incurred by using a just-in-time compiler.


Virtual Machine Java Virtual Machine Instruction Cache Call Instruction Dynamic Translation 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bell, J.R.: Threaded code. Communications of the ACM 16(6), 370–372 (1973)CrossRefGoogle Scholar
  2. 2.
    Brunthaler, S.: Virtual-machine abstraction and optimization techniques. In: Proceedings of the 4th International Workshop on Bytecode Semantics, Verification, Analysis and Transformation (BYTECODE 2009). Electronic Notes in Theoretical Computer Science, vol. 253(5), pp. 3–14. Elsevier, Amsterdam (December 2009)Google Scholar
  3. 3.
    Brunthaler, S.: Efficient inline caching without dynamic translation. In: Proceedings of the 2010 ACM Symposium on Applied Computing (SAC 2010). ACM, New York (March 2010) (to appear)Google Scholar
  4. 4.
    Casey, K., Ertl, M.A., Gregg, D.: Optimizations for a java interpreter using instruction set enhancement. Tech. Rep. 61, Department of Computer Science, University of Dublin. Trinity College (September 2005),
  5. 5.
    Conroy, T.J., Pelegri-Llopart, E.: An Assessment of Method-Lookup Caches for Smalltalk-80 Implementations. In: Krasner [16], ch. 13, pp. 239–247 (1982)Google Scholar
  6. 6.
    Deutsch, L.P., Schiffman, A.M.: Efficient implementation of the Smalltalk-80 system. In: Proceedings of the SIGPLAN 1984 Symposium on Principles of Programming Languages (POPL 1984), pp. 297–302. ACM, New York (1984)CrossRefGoogle Scholar
  7. 7.
    Ertl, M.A.: Threaded code variations and optimizations. In: EuroForth, TU Wien, Vienna, Austria, pp. 49–55 (2001)Google Scholar
  8. 8.
    Ertl, M.A., Gregg, D.: The structure and performance of efficient interpreters. Journal of Instruction-Level Parallelism 5, 1–25 (2003)Google Scholar
  9. 9.
    Fulgham, B.: The computer language benchmarks game,
  10. 10.
    Haupt, M., Hirschfeld, R., Denker, M.: Type feedback for bytecode interpreters, Position Paper (ICOOOLPS 2007) (2008),
  11. 11.
    Hölzle, U.: Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming. Ph.D. thesis, Stanford University, Stanford, CA, USA (1994)Google Scholar
  12. 12.
    Hölzle, U., Chambers, C., Ungar, D.: Optimizing dynamically-typed object-oriented languages with polymorphic inline caches. In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP 1992), pp. 21–38. Springer, London (1991)CrossRefGoogle Scholar
  13. 13.
    Hölzle, U., Ungar, D.: Optimizing dynamically-dispatched calls with run-time type feedback. In: Proceedings of the SIGPLAN 1994 Conference on Programming Language Design and Implementation (PLDI 1994), pp. 326–336 (1994)Google Scholar
  14. 14.
    Intel: Intel turbo boost technology in Intel core microarchitecture (nehalem) based processors (November 2008),
  15. 15.
    Kiczales, G., Rodriguez, L.: Efficient method dispatch in PCL. In: Proceedings of the 1990 ACM Conference on LISP and Functional Programming (LFP 1990), pp. 99–105. ACM, New York (1990)CrossRefGoogle Scholar
  16. 16.
    Krasner, G. (ed.): Smalltalk-80: bits of history, words of advice. Addison-Wesley Longman Publishing Co. Inc., Boston (1983)zbMATHGoogle Scholar
  17. 17.
    Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 1st edn. Addison-Wesley, Boston (1997)Google Scholar
  18. 18.
    Stallmann, R.M., Pesch, R.H., Shabs, S.: Debugging with GDB: The GNU source-level debugger. Free Software Foundation, 9th edn. (2009)Google Scholar
  19. 19.
    Vitale, B., Abdelrahman, T.S.: Catenation and specialization for Tcl virtual machine performance. In: Proceedings of the 2004 Workshop on Interpreters, virtual machines and emulators (IVME 2004), pp. 42–50. ACM, New York (2004)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Stefan Brunthaler
    • 1
  1. 1.Institut für ComputersprachenTechnische Universität WienWien

Personalised recommendations