Dynamic property caches: A step towards faster JavaScript proxy objects

Manuel Serrano, Robert Bruce Findler

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Inline caches and hidden classes are two essential components for closing the performance gap between static languages such as Java, Scheme, or ML and dynamic languages such as JavaScript or Python. They rely on the observation that for a particular object access located at a particular point of the program, the shapes, usually referred to as the hidden classes, of accessed objects are likely to be the same. Taking benefit of that invariant, they replace the expensive lookup the semantics of these languages normally demand with one test, the inline cache, and a memory read indexed by an offset computed during the last cache miss. These optimizations are essential but they are not general enough to cope with JavaScript's proxies. In particular, when the property name is itself unknown statically, inline cache-based optimizations always take a slow path. In this paper, we show how to generalize inline caches to cope with an unknown property name. The paper first discusses the general principle of the extension and then presents the experimental results we collected using a modified version of the Hop JavaScript compiler, demonstrating how the optimization is crucial for improving the performance of proxy objects (as they naturally use dynamic property names extensively). The evaluation report shows that the modified Hop outperforms all other implementations of the language, including the most efficient commercial ones, by a factor ranging from 2× to 100×. Even better, our optimizations are applicable to existing compilers as they require only straightforward changes to runtime data structures; no complex analyses are required.

Original languageEnglish (US)
Title of host publicationCC 2020 - Proceedings of the 29th International Conference on Compiler Construction
EditorsLouis-Noel Pouchet, Alexandra Jimborean
PublisherAssociation for Computing Machinery, Inc
Pages108-118
Number of pages11
ISBN (Electronic)9781450371209
DOIs
StatePublished - Feb 22 2020
Event29th ACM SIGPLAN International Conference on Compiler Construction, CC 2020 - San Diego, United States
Duration: Feb 22 2020Feb 23 2020

Publication series

NameCC 2020 - Proceedings of the 29th International Conference on Compiler Construction

Conference

Conference29th ACM SIGPLAN International Conference on Compiler Construction, CC 2020
CountryUnited States
CitySan Diego
Period2/22/202/23/20

Keywords

  • Hidden Classes
  • Inline Caches
  • JavaScript

ASJC Scopus subject areas

  • Software
  • Hardware and Architecture
  • Signal Processing

Fingerprint Dive into the research topics of 'Dynamic property caches: A step towards faster JavaScript proxy objects'. Together they form a unique fingerprint.

Cite this