2013
DOI: 10.1145/2480359.2429128
|View full text |Cite
|
Sign up to set email alerts
|

Optimizing data structures in high-level programs

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… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
12
0

Year Published

2013
2013
2019
2019

Publication Types

Select...
4
3
1

Relationship

6
2

Authors

Journals

citations
Cited by 17 publications
(12 citation statements)
references
References 41 publications
0
12
0
Order By: Relevance
“…the text to match) unknown to the generator [76]. Of course, we do not necessarily get an optimizing compiler, but in the case of regexp matchers, we can exploit the connection to finite automata to optimize beyond simple specialization [75,73].…”
Section: Regular Expression Matchermentioning
confidence: 99%
See 1 more Smart Citation
“…the text to match) unknown to the generator [76]. Of course, we do not necessarily get an optimizing compiler, but in the case of regexp matchers, we can exploit the connection to finite automata to optimize beyond simple specialization [75,73].…”
Section: Regular Expression Matchermentioning
confidence: 99%
“…Other systems include PetaBricks [3], CVXgen [35] and Halide [65,64]. Delite is a compiler framework for embedded DSLs that provides parallelization and heterogeneous code generation on top of LMS [73,13,74,50,82]. Related work on lowlevel systems oriented programming in high-level languages in-cludes [32] and the Singularity operating system [49], the LegoBase database engine [47], and staged parsers for communication protocols [43].…”
Section: Related Workmentioning
confidence: 99%
“…Methods like infix_+ can serve as smart constructors that perform optimizations on the fly while building the IR [18]. With some tweaks to the Scala compiler (or alternatively using Scala macros) we can extend this approach to lift language built-ins like conditionals or variable assignments into the IR, by redefining them as method calls [15].…”
Section: Futamura Projectionsmentioning
confidence: 99%
“…We have a full program representation, so we can do any analysis or transformation a regular compiler can do. In addition, we profit from the fact that the deep embedding is simpler than the original program, because lots of abstraction overhead has already been removed while the deep representation was constructed [44,40].…”
Section: Example: Compiling and Running Embedded Code (Staging)mentioning
confidence: 99%