Interprocedural Type Specialization of JavaScript Programs Without Type Analysis
Maxime Chevalier-Boisvert, Marc Feeley

TL;DR
This paper introduces an interprocedural extension of lazy basic block versioning for JavaScript JIT compilers, effectively eliminating redundant type checks without costly static analysis, leading to significant performance improvements.
Contribution
It extends lazy basic block versioning to propagate type information across function calls, outperforming static analysis in eliminating type checks and improving execution speed.
Findings
94.3% of type tag tests eliminated on average
Up to 56% speedup achieved
Outperforms Truffle/JS in execution and compilation time
Abstract
Dynamically typed programming languages such as Python and JavaScript defer type checking to run time. VM implementations can improve performance by eliminating redundant dynamic type checks. However, type inference analyses are often costly and involve tradeoffs between compilation time and resulting precision. This has lead to the creation of increasingly complex multi-tiered VM architectures. Lazy basic block versioning is a simple JIT compilation technique which effectively removes redundant type checks from critical code paths. This novel approach lazily generates type-specialized versions of basic blocks on-the-fly while propagating context-dependent type information. This approach does not require the use of costly program analyses, is not restricted by the precision limitations of traditional type analyses. This paper extends lazy basic block versioning to propagate type…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Parallel Computing and Optimization Techniques · Software Testing and Debugging Techniques
