License: Creative Commons Attribution 3.0 Unported license (CC BY 3.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2016.7
URN: urn:nbn:de:0030-drops-61019
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2016/6101/
Chevalier-Boisvert, Maxime ;
Feeley, Marc
Interprocedural Type Specialization of JavaScript Programs Without Type Analysis
Abstract
Previous work proposed lazy basic block versioning, a technique for just-in-time compilation of dynamic languages which we believe represents an interesting point in the design space. Basic block versioning is simple to implement, simple enough that a single developer can build a complete just-in-time compiler for JavaScript in a year, yet it performs surprisingly well as it propagates
context-sensitive type information to generate type-specialized code on the fly.
In this paper, we demonstrate that lazy basic block versioning
can be extended is simple ways to propagate type information across function call boundaries. This gives some of the benefits of whole-program analysis, or a tracing compiler, without having to implement the machinery for either. We have implemented this proposal in the Higgs JavaScript virtual machine and report on the empirical evaluation of this system on a set of industry standard benchmarks. The approach eliminates 94.3 of dynamic type tests on average,
which we show is more than what is achievable with any static whole-program type analysis.
BibTeX - Entry
@InProceedings{chevalierboisvert_et_al:LIPIcs:2016:6101,
author = {Maxime Chevalier-Boisvert and Marc Feeley},
title = {{Interprocedural Type Specialization of JavaScript Programs Without Type Analysis}},
booktitle = {30th European Conference on Object-Oriented Programming (ECOOP 2016)},
pages = {7:1--7:24},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-014-9},
ISSN = {1868-8969},
year = {2016},
volume = {56},
editor = {Shriram Krishnamurthi and Benjamin S. Lerner},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
address = {Dagstuhl, Germany},
URL = {http://drops.dagstuhl.de/opus/volltexte/2016/6101},
URN = {urn:nbn:de:0030-drops-61019},
doi = {10.4230/LIPIcs.ECOOP.2016.7},
annote = {Keywords: Just-In-Time Compilation, Dynamic Language, Optimization, Object Oriented, JavaScript}
}
Keywords: |
|
Just-In-Time Compilation, Dynamic Language, Optimization, Object Oriented, JavaScript |
Collection: |
|
30th European Conference on Object-Oriented Programming (ECOOP 2016) |
Issue Date: |
|
2016 |
Date of publication: |
|
18.07.2016 |