Nothing Special   »   [go: up one dir, main page]

skip to main content
10.5555/1883978.1884008acmotherconferencesArticle/Chapter ViewAbstractPublication PagesecoopConference Proceedingsconference-collections
Article

Inline caching meets quickening

Published: 21 June 2010 Publication History

Abstract

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.

References

[1]
Bell, J.R.: Threaded code. Communications of the ACM 16(6), 370-372 (1973)
[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)
[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)
[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), https://www.cs.tcd.ie/publications/tech-reports/reports.05/ TCD-CS-2005-61.pdf
[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)
[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)
[7]
Ertl, M.A.: Threaded code variations and optimizations. In: EuroForth, TU Wien, Vienna, Austria, pp. 49-55 (2001)
[8]
Ertl, M.A., Gregg, D.: The structure and performance of efficient interpreters. Journal of Instruction-Level Parallelism 5, 1-25 (2003)
[9]
Fulgham, B.: The computer language benchmarks game, http://shootout.alioth.debian.org/
[10]
Haupt, M., Hirschfeld, R., Denker, M.: Type feedback for bytecode interpreters, Position Paper (ICOOOLPS 2007) (2008), http://scg.unibe.ch/archive/papers/Haup07aPIC.pdf
[11]
Hölzle, U.: Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming. Ph.D. thesis, Stanford University, Stanford, CA, USA (1994)
[12]
Hölzle, U., Chambers, C., Ungar, D.: Optimizing dynamically-typed objectoriented languages with polymorphic inline caches. In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP 1992), pp. 21-38. Springer, London (1991)
[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)
[14]
Intel: Intel turbo boost technology in Intel core microarchitecture (nehalem) based processors (November 2008), http://download.intel.com/design/processor/applnots/ 320354.pdf?iid=tech tb+paper
[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)
[16]
Krasner, G. (ed.): Smalltalk-80: bits of history, words of advice. Addison-Wesley Longman Publishing Co. Inc., Boston (1983)
[17]
Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 1st edn. Addison-Wesley, Boston (1997)
[18]
Stallmann, R.M., Pesch, R.H., Shabs, S.: Debugging with GDB: The GNU sourcelevel debugger. Free Software Foundation, 9th edn. (2009)
[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)

Cited By

View all
  • (2022)Interpreter Register Autolocalisation: Improving the Performance of Efficient InterpretersCompanion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming10.1145/3532512.3532518(1-5)Online publication date: 21-Mar-2022
  • (2019)Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structuresProceedings of the ACM on Programming Languages10.1145/32903423:POPL(1-30)Online publication date: 2-Jan-2019
  • (2018)A framework for constructing javascript virtual machines with customized datatype representationsProceedings of the 33rd Annual ACM Symposium on Applied Computing10.1145/3167132.3167266(1238-1247)Online publication date: 9-Apr-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
ECOOP'10: Proceedings of the 24th European conference on Object-oriented programming
June 2010
599 pages
ISBN:3642141064
  • Editor:
  • Theo D'Hondt

Sponsors

  • Google Inc.

In-Cooperation

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 21 June 2010

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 19 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2022)Interpreter Register Autolocalisation: Improving the Performance of Efficient InterpretersCompanion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming10.1145/3532512.3532518(1-5)Online publication date: 21-Mar-2022
  • (2019)Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structuresProceedings of the ACM on Programming Languages10.1145/32903423:POPL(1-30)Online publication date: 2-Jan-2019
  • (2018)A framework for constructing javascript virtual machines with customized datatype representationsProceedings of the 33rd Annual ACM Symposium on Applied Computing10.1145/3167132.3167266(1238-1247)Online publication date: 9-Apr-2018
  • (2017)Static optimization in PHP 7Proceedings of the 26th International Conference on Compiler Construction10.1145/3033019.3033026(65-75)Online publication date: 5-Feb-2017
  • (2016)Workload characterization of JVM languagesSoftware—Practice & Experience10.1002/spe.233746:8(1053-1089)Online publication date: 1-Aug-2016
  • (2014)Accelerating iterators in optimizing AST interpretersACM SIGPLAN Notices10.1145/2714064.266022349:10(727-743)Online publication date: 15-Oct-2014
  • (2014)Deoptimization for dynamic language JITs on typed, stack-based virtual machinesACM SIGPLAN Notices10.1145/2674025.257620949:7(103-114)Online publication date: 1-Mar-2014
  • (2014)Accelerating iterators in optimizing AST interpretersProceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications10.1145/2660193.2660223(727-743)Online publication date: 15-Oct-2014
  • (2014)Python Interpreter Performance DeconstructedProceedings of the Workshop on Dynamic Languages and Applications10.1145/2617548.2617552(1-9)Online publication date: 9-Jun-2014
  • (2014)Deoptimization for dynamic language JITs on typed, stack-based virtual machinesProceedings of the 10th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments10.1145/2576195.2576209(103-114)Online publication date: 1-Mar-2014
  • Show More Cited By

View Options

Login options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media