Proceedings of the 7th ACM Workshop on Virtual Machines and Intermediate Languages 2013
DOI: 10.1145/2542142.2542143
|View full text |Cite
|
Sign up to set email alerts
|

An intermediate representation for speculative optimizations in a dynamic compiler

Abstract: We present a compiler intermediate representation (IR) that allows dynamic speculative optimizations for high-level languages. The IR is graph-based and contains nodes fixed to control flow as well as floating nodes. Side-effecting nodes include a framestate that maps values back to the original program. Guard nodes dynamically check assumptions and, on failure, deoptimize to the interpreter that continues execution. Guards implicitly use the framestate and program position of the last side-effecting node. The… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
54
0

Year Published

2015
2015
2024
2024

Publication Types

Select...
3
3
2

Relationship

2
6

Authors

Journals

citations
Cited by 94 publications
(54 citation statements)
references
References 26 publications
(23 reference statements)
0
54
0
Order By: Relevance
“…For example, when accessing an Array object, it does the following: Dynamic compilers (such as the Graal compiler) can eliminate many of these checks and can therefore reduce the run-time overhead [12,13,38,44]. Using conditional elimination [38], the Graal compiler can remove redundant run-time checks by merging them.…”
Section: Discussionmentioning
confidence: 99%
See 1 more Smart Citation
“…For example, when accessing an Array object, it does the following: Dynamic compilers (such as the Graal compiler) can eliminate many of these checks and can therefore reduce the run-time overhead [12,13,38,44]. Using conditional elimination [38], the Graal compiler can remove redundant run-time checks by merging them.…”
Section: Discussionmentioning
confidence: 99%
“…Conditional elimination reduces the number of conditional expressions by performing a data-flow analysis over the IR graph and pruning conditions that can be proven to be true. Loop invariant code motion [12,13] moves run-time checks out of loops if the compiler can prove that a condition is loop-invariant. In this case, the static number of checks remains the same, but a check outside a loop is likely to be executed less often than inside a loop.…”
Section: Discussionmentioning
confidence: 99%
“…Our high-level API is inspired from the array programming model and provides the user with composable algorithmic patterns such as map or reduce as seen in the previous section. The OpenCL code generator extends the new Oracle Graal VM [13] (just in time compiler written in Java) to compile Java byte into OpenCL. Finally, our third component handles data transfer and device management.…”
Section: System Overviewmentioning
confidence: 99%
“…For example, for the map pattern, the customizing lambda expression is handed over to Graal which parses the corresponding byte-code into its own internal IR [13].…”
Section: Graal Ir Generation and Optimizationmentioning
confidence: 99%
“…Using R as a use case, we extend the existing FastR [18] interpreter which is built upon the Truffle framework [23] and we use the Graal [2] JIT compiler to produce OpenCL code. The R interpreter is modified slightly to detect parallel operations and represent them as parallel nodes in the Abstract Syntax Tree (AST) interpreter.…”
Section: Introductionmentioning
confidence: 99%