2016
DOI: 10.5381/jot.2016.15.2.a1
|View full text |Cite
|
Sign up to set email alerts
|

Practical Validation of Bytecode to Bytecode JIT Compiler Dynamic Deoptimization.

Abstract: Speculative inlining in just-in-time compilers enables many performance optimizations. However, it also introduces significant complexity. The compiler optimizations themselves, as well as the deoptimization mechanism are complex and error prone. To stabilize our bytecode to bytecode just-in-time compiler, we designed a new approach to validate the correctness of dynamic deoptimization. The approach consists of the symbolic execution of an optimized and an unoptimized bytecode compiled method side by side, deo… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
9
0

Year Published

2016
2016
2024
2024

Publication Types

Select...
5
3

Relationship

3
5

Authors

Journals

citations
Cited by 11 publications
(9 citation statements)
references
References 32 publications
0
9
0
Order By: Relevance
“…The generated runtime, i.e., the machine code compiled methods generated by the JIT compiler, is executed using a machine code simulator. In Pharo, we have extended the original machine code simulation infrastructure to use Unicorn 3 , a QEMU-based machine code simulation library. Unicorn provides a small yet powerful API to simulate machine code on multiple architectures.…”
Section: An Iterative Test-based Methodologymentioning
confidence: 99%
“…The generated runtime, i.e., the machine code compiled methods generated by the JIT compiler, is executed using a machine code simulator. In Pharo, we have extended the original machine code simulation infrastructure to use Unicorn 3 , a QEMU-based machine code simulation library. Unicorn provides a small yet powerful API to simulate machine code on multiple architectures.…”
Section: An Iterative Test-based Methodologymentioning
confidence: 99%
“…This is done through a bytecode‐to‐bytecode optimizer, 22 re‐using the existing template JIT as a back‐end. To be able to generate efficient code in the bytecode‐to‐bytecode optimizer, we introduced new unsafe bytecodes enabling, for example, to access arrays without type and bounds checks 23 . For each new bytecode, we introduced new templates in the existing JIT to generate efficient machine code for the optimized methods using the new bytecodes.…”
Section: Experiences Debugging Within the Simulatormentioning
confidence: 99%
“…There are formalizations for tracing compilers [Dissegna, Logozzo, and Ranzato 2014;Guo and Palsberg 2011], but we are unaware of any other formalization effort for speculative optimizations in general. Béra, Miranda, Denker, and Ducasse [2016] present a verifier for a bytecode-to-bytecode optimizer. By symbolically executing optimized and unoptimized code, they verify that the deoptimization metadata produced by their optimizer correctly maps the symbolic values of the former to the latter at all deoptimization points.…”
Section: Related Workmentioning
confidence: 99%