Naïve Transient Cast Insertion Isn't (That) Bad
Transient gradual type systems often depend on type-based cast insertion to
achieve good performance: casts are inserted whenever the static
checker detects that a dynamically-typed value may flow into a
Transient gradually typed programs are then often executed using
just-in-time compilation, and contemporary just-in-time compilers are
very good at removing redundant computations.
In this paper we present work-in-progress to measure the ability of
just-in-time compilers to remove redundant type checks. We
investigate worst-case performance and so take a naïve approach,
annotating every subexpression to insert every plausible dynamic
cast. Our results indicate that the Moth VM still manages to
eliminate much of the overhead, by relying on the state-of-the-art
SOMns substrate and Graal just-in-time compiler.
We hope these results will help language implementers evaluate the
tradeoffs between dynamic
optimisations (which can improve the performance of both statically
and dynamically typed programs) and static optimisations
(which improve only statically typed code).
Erin Greenwood-Thessman, Isaac Oscar Gariano, Richard Roberts, Stefan Marr, Michael Homer, James Noble
Workshop on Implementation, Compilation, Optimization of OO Languages, Programs and Systems (ICOOOLPS
The final copy of this publication is available from the publisher
- this page
Michael Homer — 2021