On-stack replacement (OSR) is essential technology for adaptive optimization, allowing changes to code actively executing in a managed runtime. The engineering aspects of OSR are well-known among VM architects, with several implementations available to date. However, OSR is yet to be explored as a general means to transfer execution between related program versions, which can pave the road to unprecedented applications that stretch beyond VMs. 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 describe and evaluate an implementation of our technique in LLVM. As a novel application of OSR, we present a feasibility study on debugging of optimized code, showing how our techniques can be used to fix variables holding incorrect values at breakpoints due to optimizations.
Wed 20 JunDisplayed time zone: Eastern Time (US & Canada) change
14:00 - 15:40 | Dynamic TechniquesPLDI Research Papers at Grand Ballroom CD Chair(s): Sorin Lerner University of California, San Diego | ||
14:00 25mTalk | HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack PLDI Research Papers Guilherme Ottoni Facebook Media Attached | ||
14:25 25mTalk | On-Stack Replacement, Distilled PLDI Research Papers Media Attached | ||
14:50 25mTalk | EffectiveSan: Type and Memory Error Detection using Dynamically Typed C/C++ PLDI Research Papers Gregory J. Duck National University of Singapore, Singapore, Roland H. C. Yap National University of Singapore, Singapore Media Attached | ||
15:15 25mTalk | Calling-to-Reference Context Translation via Constraint-Guided CFL-Reachability PLDI Research Papers Cheng Cai University of California, Irvine, Qirun Zhang University of California, Davis, Zhiqiang Zuo Nanjing University, China, Khanh Nguyen University of California, Irvine, Harry Xu University of California, Los Angeles (UCLA), Zhendong Su University of California, Davis Media Attached |