2018
DOI: 10.4204/eptcs.285.5
|View full text |Cite
|
Sign up to set email alerts
|

Compiling with Continuations and LLVM

Abstract: LLVM is an infrastructure for code generation and low-level optimizations, which has been gaining popularity as a backend for both research and industrial compilers, including many compilers for functional languages. While LLVM provides a relatively easy path to high-quality native code, its design is based on a traditional runtime model which is not well suited to alternative compilation strategies used in high-level language compilers, such as the use of heap-allocated continuation closures.This paper descri… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

0
5
0

Year Published

2020
2020
2020
2020

Publication Types

Select...
2

Relationship

1
1

Authors

Journals

citations
Cited by 2 publications
(5 citation statements)
references
References 18 publications
(31 reference statements)
0
5
0
Order By: Relevance
“…These numbers are the average of ten runs of each benchmark. Based on our previous experience with the LLVM and MLRisc backends for Manticore [13], we expected to see noticeable improvements for floating-point code (e.g., the mandelbrot and mc-ray benchmarks), which we do see. Surprisingly, we also saw some significant speed up for other benchmarks, but since the running times on these programs are so small, measurement error may be more of an issue.…”
Section: Execution Timementioning
confidence: 78%
See 4 more Smart Citations
“…These numbers are the average of ten runs of each benchmark. Based on our previous experience with the LLVM and MLRisc backends for Manticore [13], we expected to see noticeable improvements for floating-point code (e.g., the mandelbrot and mc-ray benchmarks), which we do see. Surprisingly, we also saw some significant speed up for other benchmarks, but since the running times on these programs are so small, measurement error may be more of an issue.…”
Section: Execution Timementioning
confidence: 78%
“…Thus, by modifying LLVM to add a new calling convention, we can dictate the register usage at those places. In previous work for the Manticore system [13], we described a new calling convention for LLVM, called Jump With Arguments (JWA), that can be used to support the stackless, heap-allocated-closure runtime model used by both Manticore and SML/NJ. The JWA calling convention has the property that it uses almost all of the available hardware registers for general-purpose parameter passing.…”
Section: Runtime Conventionsmentioning
confidence: 99%
See 3 more Smart Citations