Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises
Runtime metaprogramming enables many useful applications and is often a convenient solution to solve problems in a generic way, which makes it widely used in frameworks, middleware, and domain-specific languages. However, powerful metaobject protocols are rarely supported and even common concepts such as reflective method invocation or dynamic proxies are not optimized. Solutions proposed in literature either restrict the metaprogramming capabilities or require application or library developers to apply performance improving techniques.
For overhead-free runtime metaprogramming, we demonstrate that dispatch chains, a generalized form of polymorphic inline caches, are a simple optimization at the language implementation level. Our evaluation shows that unrestricted metaobject protocols can be realized without runtime overhead for the first time. Furthermore, we demonstrate that optimizing common reflective operations can lead to significant performance improvements for existing applications.
Wed 17 JunDisplayed time zone: Tijuana, Baja California change
16:00 - 17:40
PotpourriResearch Papers at PLDI Main RED (Portland 256)
Chair(s): Tiark Rompf Purdue & Oracle Labs
|Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises|
Stefan Marr Inria, France, Chris Seaton Oracle Labs / University of Manchester, Stéphane Ducasse INRIA LilleMedia Attached
|Finding Counterexamples from Parsing Conflicts|
Chinawat Isradisaikul Cornell University, Andrew MyersMedia Attached
|Interactive Parser Synthesis by Example|
Alan Leung University of California, San Diego, John Sarracino University of California, San Diego, Sorin Lerner University of California, San DiegoMedia Attached
|A Simpler, Safer Programming and Execution Model for Intermittent Systems|
Brandon Lucia Carnegie Mellon University, Benjamin Ransford University of WashingtonMedia Attached