“…As in Graal [Duboscq et al 2013], deoptimization is specified at the IR level by dedicated instructions which have a formally specified semantics. Without loss of generality, we restrict our attention to a uniform execution model in which both the unoptimized and the optimized code are expressed in the same intermediate language, similarly to the approach adopted by Béra et al [2016] and Flückiger et al [2019]. Furthermore, we carefully separate mechanism, i.e., how code is generated, optimized and deoptimized, from policy, i.e., when and what to optimize.…”