Filters








21 Hits in 1.5 sec

Formally verified speculation and deoptimization in a JIT compiler

Aurèle Barrière, Sandrine Blazy, Olivier Flückiger, David Pichardie, Jan Vitek
2021 Proceedings of the ACM on Programming Languages (PACMPL)  
This paper presents a model just-in-time compiler with an intermediate representation that explicits the synchronization points used for deoptimization and the assumptions made by the compiler's speculation  ...  We also present several common compiler optimizations that can leverage speculation to generate improved code. The optimizations are proved correct with the help of a proof assistant.  ...  These are the part that have been formalized and verified.  ... 
doi:10.1145/3434327 fatcat:uf7jy646mvg5zk2kmozutrjyla

Practical Validation of Bytecode to Bytecode JIT Compiler Dynamic Deoptimization

Clément Béra, Eliot Miranda, Marcus Denker, Stéphane Ducasse
2016 Journal of Object Technology  
To stabilize our bytecode to bytecode just-in-time compiler, we designed a new approach to validate the correctness of dynamic deoptimization.  ...  Speculative inlining in just-in-time compilers enables many performance optimizations. However, it also introduces significant complexity.  ...  Acknowledgements We thank Stefan Marr and Xavier Leroy for their reviews of an earlier versions of this article.  ... 
doi:10.5381/jot.2016.15.2.a1 fatcat:5hchktfsqvdjrglimrthrfdvnq

Correctness of Speculative Optimizations with Dynamic Deoptimization [article]

Olivier Flückiger, Gabriel Scherer, Ming-Ho Yee, Aviral Goel, Amal Ahmed, Jan Vitek
2017 arXiv   pre-print
These optimizations are typically performed by a just-in-time compiler that generates code under a set of assumptions about the state of the program and its environment.  ...  This paper looks at the interaction between optimization and deoptimization, and shows that reasoning about speculation is surprisingly easy when assumptions are made explicit in the program representation  ...  In particular, he suggested adding a non-silent stop transition to recover equi-termination from weak bisimilarity. Francesco Zappa Nardelli helped with the motivation and presentation of our work.  ... 
arXiv:1711.03050v2 fatcat:fghw4kiznvad3hqvsdzmm2qhn4

Correctness of speculative optimizations with dynamic deoptimization

Olivier Flückiger, Gabriel Scherer, Ming-Ho Yee, Aviral Goel, Amal Ahmed, Jan Vitek
2017 Proceedings of the ACM on Programming Languages  
In particular, he suggested adding a non-silent stop transition to recover equi-termination from weak bisimilarity. Francesco Zappa Nardelli helped with the motivation and presentation of our work.  ...  Any opinions, findings, and conclusions expressed in this material may be those of the authors and likely do not reflect the views of our funding agencies.  ...  In this work we give compiler writers the formal tools they need to reason about speculative optimizations.  ... 
doi:10.1145/3158137 dblp:journals/pacmpl/FluckigerSYGAV18 fatcat:zgb4yuglxrgnvgqkwa52cbdet4

On-stack replacement, distilled

Daniele Cono D'Elia, Camil Demetrescu
2018 Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation - PLDI 2018  
We describe and evaluate an implementation of our technique in LLVM.  ...  We aim at filling this gap with a constructive and provably correct OSR framework, allowing a class of general-purpose transformation functions to yield a special-purpose replacement.  ...  We are grateful to Gustavo Petri for suggesting the use of bisimulation in our theoretical framework, to Jan Vitek for some enlightening discussions, and to the anonymous PLDI reviewers and our shepherd  ... 
doi:10.1145/3192366.3192396 dblp:conf/pldi/DEliaD18 fatcat:3zh7pabes5fdrbdt53h3zec7li

On-Stack Replacement à la Carte [article]

Daniele Cono D'Elia, Camil Demetrescu
2017 arXiv   pre-print
In this article we make a first step towards a provably sound abstract framework for OSR. We show that compiler optimizations can be made OSR-aware in isolation, and then safely composed.  ...  We identify a class of transformations, which we call live-variable equivalent (LVE), that captures a natural property of fundamental compiler optimizations, and devise an algorithm to automatically generate  ...  Alternatively, in a virtual machine with a JIT compiler and an integrated debugger, the runtime might recompile a function when the user inserts a breakpoint in it, artificially extending the liveness  ... 
arXiv:1708.02512v1 fatcat:zs6xy7cllfh3bh5fksu5ro4zje

Hop, Skip, & Jump

Kunshan Wang, Stephen M. Blackburn, Antony L. Hosking, Michael Norrish
2018 Proceedings of the 14th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments - VEE '18  
Conventional wisdom, apparent in JavaScript engines such as V8 and SpiderMonkey, is that OSR must be implemented in a low-level (i.e., in assembly) and language-specific way.  ...  This work helps crystallize OSR abstractions and, by providing a reusable implementation, brings OSR within reach for more language implementers.  ...  Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.  ... 
doi:10.1145/3186411.3186412 dblp:conf/vee/WangBHN18 fatcat:tyinkmu4tzggfmglp2y7edl324

Comparing points-to static analysis with runtime recorded profiling data

Codruţ Stancu, Christian Wimmer, Stefan Brunthaler, Per Larsen, Michael Franz
2014 Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform Virtual machines, Languages, and Tools - PPPJ '14  
Our preliminary results show that runtime profiling is 10% more accurate in optimizing frequently executed virtual calls and 73% more accurate in optimizing frequently executed type checks.  ...  This is the first step in formulating an adaptive approach to static analysis that uses dynamic information to increase results precision of frequently executed code.  ...  Acknowledgments Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.  ... 
doi:10.1145/2647508.2647524 dblp:conf/pppj/StancuWBLF14 fatcat:7zx6tu6f2fcbpiknivtwqiqkxm

Interprocedural Type Specialization of JavaScript Programs Without Type Analysis [article]

Maxime Chevalier-Boisvert, Marc Feeley
2015 arXiv   pre-print
Our implementation in a JavaScript JIT compiler shows that across 26 benchmarks, interprocedural basic block versioning eliminates more type tag tests on average than what is achievable with static type  ...  Lazy basic block versioning is a simple JIT compilation technique which effectively removes redundant type checks from critical code paths.  ...  This analysis tries to strike a balance between precision and speed, it is likely too expensive for use in JIT compilers, however.  ... 
arXiv:1511.02956v1 fatcat:i66qaeqxqrg3xp2htnwevimrya

Simple and Effective Type Check Removal through Lazy Basic Block Versioning [article]

Maxime Chevalier-Boisvert, Marc Feeley
2015 arXiv   pre-print
We have implemented intraprocedural lazy basic block versioning in a JavaScript JIT compiler. This approach is compared with a classical flow-based type analysis.  ...  This paper introduces lazy basic block versioning, a simple JIT compilation technique which effectively removes redundant type checks from critical code paths.  ...  This work was supported, in part, by the Natural Sciences and Engineering Research Council of Canada (NSERC) and Mozilla Corporation.  ... 
arXiv:1411.0352v2 fatcat:zjbs2hjjrngf3lpmpc2xgcny4m

An object storage model for the truffle language implementation framework

Andreas Wöß, Christian Wirth, Daniele Bonetta, Chris Seaton, Christian Humer, Hanspeter Mössenböck
2014 Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform Virtual machines, Languages, and Tools - PPPJ '14  
It is also highperformance, as it is designed to benefit from the optimizing compiler in the Truffle framework.  ...  The OSM is generic, language-agnostic, and portable, as it can be used to implement a great variety of dynamic languages. It is extensible, featuring built-in support for custom extension mechanisms.  ...  Oracle, Java, and HotSpot are trademarks or registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.  ... 
doi:10.1145/2647508.2647517 dblp:conf/pppj/WossWBSHM14 fatcat:fbs4jxnnsjbk3pgntvsnzunezu

Bringing the web up to speed with WebAssembly

Andreas Haas, Andreas Rossberg, Derek L. Schuff, Ben L. Titzer, Michael Holman, Dan Gohman, Luke Wagner, Alon Zakai, JF Bastien
2017 Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation - PLDI 2017  
WebAssembly has been designed with a formal semantics from the start.  ...  It offers compact representation, efficient validation and compilation, and safe low to no-overhead execution.  ...  Acknowledgements We thank the members of the W3C WebAssembly community group for their many contributions to the design and implementation of WebAssembly, and Conrad Watt for valuable feedback on the formalization  ... 
doi:10.1145/3062341.3062363 dblp:conf/pldi/HaasRSTHGWZB17 fatcat:zewxp3vj7bd2daw4xpeq4kbr3e

Adapting virtual machine techniques for seamless aspect support

Christoph Bockisch, Matthew Arnold, Tom Dinkelaker, Mira Mezini
2006 SIGPLAN notices  
Current approaches to compiling aspect-oriented programs are inefficient.  ...  This inefficiency has negative effects on the productivity of the development process and is especially prohibitive for dynamic aspect deployment.  ...  As a result, we needed to modify the locations in the JIT compiler that assumed a guarded inline must have a receiver object.  ... 
doi:10.1145/1167515.1167483 fatcat:n7jghma63zdtndhsecjc7jprey

Adapting virtual machine techniques for seamless aspect support

Christoph Bockisch, Matthew Arnold, Tom Dinkelaker, Mira Mezini
2006 Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications - OOPSLA '06  
Current approaches to compiling aspect-oriented programs are inefficient.  ...  This inefficiency has negative effects on the productivity of the development process and is especially prohibitive for dynamic aspect deployment.  ...  As a result, we needed to modify the locations in the JIT compiler that assumed a guarded inline must have a receiver object.  ... 
doi:10.1145/1167473.1167483 dblp:conf/oopsla/BockischADM06 fatcat:zc6eiwbmpvcjxkotpireqfciua

Trace register allocation

Josef Eisl
2015 Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity - SPLASH Companion 2015  
In a just-in-time compiler, compile time is a particular issue because compilation happens during program execution and contributes to the overall application run time.  ...  of a trace in order to control the tradeoff between compile time and peak performance, and (2) to allocate traces in parallel in order to reduce compilation latency, i.e., the time until the result of  ...  In addition, many JIT compilers perform speculative optimizations , based on profiling information (e.g., inlining a specific call target of a virtual call, although there might be multiple candidates)  ... 
doi:10.1145/2814189.2814199 dblp:conf/oopsla/Eisl15 fatcat:nmkxq2jezfbfbpkz2kknx7rzl4
« Previous Showing results 1 — 15 out of 21 results