Christian Humer, Christian Wimmer, Christian Wirth, Andreas Wöß, Thomas Würthinger,
"A domain-specific language for building self-optimizing AST interpreters"
: Proceeding GPCE 2014 Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences, ACM New York, Seite(n) 123-132, 9-2014, ISBN: 978-1-4503-3161-6
Original Titel:
A domain-specific language for building self-optimizing AST interpreters
Sprache des Titels:
Englisch
Original Buchtitel:
Proceeding GPCE 2014 Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences
Original Kurzfassung:
Self-optimizing AST interpreters dynamically adapt to the provided input for faster execution. This adaptation includes initial tests of the input, changes to AST nodes, and insertion of guards that ensure assumptions still hold. Such specialization and speculation is essential for the performance of dynamic programming languages such as JavaScript. In traditional procedural and objectoriented programming languages it can be tedious to write selfoptimizing AST interpreters, as those languages fail to provide constructs that would specifically support that. This paper introduces a declarative domain-specific language (DSL) that greatly simplifies writing self-optimizing AST interpreters. The DSL supports specialization of operations based on types of the input and other properties. It can then use these specializations directly or chain them to represent the operation with the minimum amount of code possible. The DSL significantly reduces the complexity of expressing specializations for those interpreters. We use it in our high-performance implementation of JavaScript, where 274 language operations have an average of about 4 and a maximum of 190 specializations. In addition, the DSL is used in implementations of Ruby, Python, R, and Smalltalk.