Abstract
Storage strategies have been proposed as a run-time optimization for the PyPy Python implementation and have shown promising results for optimizing execution speed and memory requirements. However, it remained unclear whether the approach works equally well in other dynamic languages. Furthermore, while PyPy is based on RPython, a language to write VMs with reusable components such as a tracing just-in-time compiler and garbage collection, the strategies design itself was not generalized to be reusable across languages implemented using that same toolchain. In this paper, we present a general design and implementation for storage strategies and show how they can be reused across different RPython-based languages. We evaluate the performance of our implementation for RSqueak, an RPython-based VM for Squeak/Smalltalk and show that storage strategies may indeed offer performance benefits for certain workloads in other dynamic programming languages.We furthermore evaluate the generality of our implementation by applying it to Topaz, a Ruby VM, and Pycket, a Racket implementation.
- S. Bauman, C. F. Bolz, R. Hirschfeld, V. Krilichev, T. Pape, J. Siek, and S. Tobin-Hochstadt. Pycket: A tracing JIT for a functional language. In Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, ICFP ’15, New York, NY, USA, 2015. ACM. ISBN 978-1- 4503-3669-7. to appear. Google Scholar
Digital Library
- C. F. Bolz, A. Cuni, M. Fijłakowski, M. Leuschel, S. Pedroni, and A. Rigo. Allocation removal by partial evaluation in a tracing jit. In Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation, pages 43–52. ACM, 2011. Google Scholar
Digital Library
- C. F. Bolz, L. Diekmann, and L. Tratt. Storage strategies for collections in dynamically typed languages. In Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications, pages 167––182. ACM, 2013. Google Scholar
Digital Library
- G. Bracha and W. Cook. Mixin-based inheritance. ACM SIGPLAN Notices, 25(10):303–311, 1990. Google Scholar
Digital Library
- M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and mixins. In Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 171–183. ACM, 1998. Google Scholar
Digital Library
- B. Goldberg and Y. G. Park. Higher order escape analysis: optimizing stack allocation in functional program implementations. In ESOP’90, pages 152–160. Springer, 1990. Google Scholar
Digital Library
- IEEE. Ieee 754: Standard for binary floating-point arithmetic, Aug. 2014. URL http://grouper.ieee.org/groups/ 754.Google Scholar
- T. Kalibera and R. Jones. Rigorous benchmarking in reasonable time. In ACM SIGPLAN Notices, volume 48(11), pages 63–74. ACM, 2013. Google Scholar
Digital Library
- Oracle. OpenJDK: Graal project, Aug. 2014. URL http: //openjdk.java.net/projects/graal/.Google Scholar
- C. Seaton. Optimising small data structures in jruby +truffle, Aug. 2014. URL http://www.chrisseaton.com/ rubytruffle/small-data-structures/.Google Scholar
- C. Wimmer and T. Würthinger. Tru ffle: a self-optimizing runtime system. In Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity, pages 13–14. ACM, 2012. Google Scholar
Digital Library
Index Terms
Language-independent storage strategies for tracing-JIT-based virtual machines
Recommendations
Storage strategies for collections in dynamically typed languages
OOPSLA '13: Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applicationsDynamically typed language implementations often use more memory and execute slower than their statically typed cousins, in part because operations on collections of elements are unoptimised. This paper describes storage strategies, which dynamically ...
Language-independent storage strategies for tracing-JIT-based virtual machines
DLS 2015: Proceedings of the 11th Symposium on Dynamic LanguagesStorage strategies have been proposed as a run-time optimization for the PyPy Python implementation and have shown promising results for optimizing execution speed and memory requirements. However, it remained unclear whether the approach works equally ...
Eclipse OMR garbage collection for tracing JIT-based virtual machines
CASCON '21: Proceedings of the 31st Annual International Conference on Computer Science and Software EngineeringThe RPython framework provides a toolchain with reusable tracing Just-In-Time (JIT) compilation, and garbage collection (GC) that Virtual Machines (VMs) written in it inherit. This toolchain has provided an efficient way over the years for implementing ...






Comments