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.
Description
Language-independent storage strategies for tracing-JIT-based virtual machines
%0 Conference Paper
%1 Pape:2015:LSS
%A Pape, Tobias
%A Felgentreff, Tim
%A Hirschfeld, Robert
%A Gulenko, Anton
%A Bolz, Carl Friedrich
%B Proceedings of the 11th Symposium on Dynamic Languages
%D 2015
%I ACM
%K Collections PyPy Strategies
%P 104--113
%R 10.1145/2816707.2816716
%T Language-independent Storage Strategies for tracing-JIT-based Virtual Machines
%X 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.
%@ 978-1-4503-3690-1
@inproceedings{Pape:2015:LSS,
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.},
acmid = {2816716},
added-at = {2016-03-23T14:56:33.000+0100},
author = {Pape, Tobias and Felgentreff, Tim and Hirschfeld, Robert and Gulenko, Anton and Bolz, Carl Friedrich},
biburl = {https://www.bibsonomy.org/bibtex/215ef1b7f3946e7338034119b251c7e61/gron},
booktitle = {Proceedings of the 11th Symposium on Dynamic Languages},
description = {Language-independent storage strategies for tracing-JIT-based virtual machines},
doi = {10.1145/2816707.2816716},
interhash = {677dd34c2cd720af6db7f93b2916dcd1},
intrahash = {15ef1b7f3946e7338034119b251c7e61},
isbn = {978-1-4503-3690-1},
keywords = {Collections PyPy Strategies},
location = {Pittsburgh, PA, USA},
numpages = {10},
pages = {104--113},
publisher = {ACM},
series = {DLS 2015},
timestamp = {2016-03-23T14:56:33.000+0100},
title = {Language-independent Storage Strategies for tracing-JIT-based Virtual Machines},
year = 2015
}