Optimizing data structures in high-level programs
Citations Over TimeTop 1% of 2013 papers
Abstract
High level data structures are a cornerstone of modern programming and at the same time stand in the way of compiler optimizations. In order to reason about user- or library-defined data structures compilers need to be extensible. Common mechanisms to extend compilers fall into two categories. Frontend macros, staging or partial evaluation systems can be used to programmatically remove abstraction and specialize programs before they enter the compiler. Alternatively, some compilers allow extending the internal workings by adding new transformation passes at different points in the compile chain or adding new intermediate representation (IR) types. None of these mechanisms alone is sufficient to handle the challenges posed by high level data structures. This paper shows a novel way to combine them to yield benefits that are greater than the sum of the parts.
Related Papers
- → A new verified compiler backend for CakeML(2016)49 cited
- → Dynamically Adaptable Software with Metacomputations in a Staged Language(2001)4 cited
- A Study of Compiler Techniques for Multiple Targets in Compiler Infrastructures(2003)
- → RISE & Shine: Language-Oriented Compiler Design(2022)