2010
DOI: 10.1007/978-3-642-16478-1_6
|View full text |Cite
|
Sign up to set email alerts
|

Arity Raising in Manticore

Abstract: Abstract. Compilers for polymorphic languages are required to treat values in programs in an abstract and generic way at the source level. The challenges of optimizing the boxing of raw values, flattening of argument tuples, and raising the arity of functions that handle complex structures to reduce memory usage are old ones, but take on newfound import with processors that have twice as many registers. We present a novel strategy that uses both control-flow and type information to provide an arity raising imp… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
7
0

Year Published

2013
2013
2018
2018

Publication Types

Select...
2
2

Relationship

1
3

Authors

Journals

citations
Cited by 4 publications
(7 citation statements)
references
References 18 publications
0
7
0
Order By: Relevance
“…We have some quantitative evidence in particular for the latter in that benchmarks on the left side of the graph tend to be particularly sensitive to thunk-representation choice (we have several such choices). We believe that a more sophisticated approach to elimi- nating currying [5] than we have so far attempted might help. There is also some room for improvement in our thunk representation.…”
Section: Performancementioning
confidence: 94%
See 1 more Smart Citation
“…We have some quantitative evidence in particular for the latter in that benchmarks on the left side of the graph tend to be particularly sensitive to thunk-representation choice (we have several such choices). We believe that a more sophisticated approach to elimi- nating currying [5] than we have so far attempted might help. There is also some room for improvement in our thunk representation.…”
Section: Performancementioning
confidence: 94%
“…This approach was easy to implement and gave good improvements in runtime. However, the overhead of curried functions continue to be an issue in some benchmarks, suggesting that more sophisticated controlflow analysis based techniques [5] might be beneficial (either at the ANormStrict level, or in MIL). We have also considered experimenting with dynamic techniques such as those described by Marlow and Peyton Jones [15], but would prefer to explore static options first, since dynamic options impose an overhead even when they are not used.…”
Section: Anormstrict Optimizationsmentioning
confidence: 97%
“…We support the parallelism and concurrency features of PML by transformations on the AST and BOM representations that introduce explicit continuation binders [15,16,4,25]. The translation from BOM to CPS uses the Danvy-Filinski CPS transformation [7] and we perform several kinds of optimizations on the CPS IR [5,3]. The conversion from CPS to CFG uses a flat, safe-for-space, closure representation [6].…”
Section: The Pml Compilermentioning
confidence: 99%
“…We also hand-crafted two sequences of LLVM optimization passes, using trial-and-error guided by intuition, 5 to simplify the LLVM program output by the PML compiler. Crafting a custom pass sequence is recommended for compiler frontends that target LLVM, as the default "-Ox" passes are tuned for a C/C++ frontend [9].…”
Section: Llvm Optimizationsmentioning
confidence: 99%
“…Variants of normalization (also known as scalar replacement of aggregates or flattening) have been employed in numerous functional language implementations, e.g. [3] and [36]. Reducing tuples to individual scalar values simplifies the program to a normal form where tuples no longer appear and exposes the individual values to classical compiler optimizations.…”
Section: Normalizationmentioning
confidence: 99%