The HipHop Virtual Machine (HHVM) is a JIT compiler and runtime for PHP. While PHP values are dynamically typed, real programs often have latent types that are use- ful for optimization once discovered. Some types can be proven through static analysis, but limitations in the ahead- of-time approach leave some types to be discovered at run time. And even though many values have latent types, PHP programs can also contain polymorphic variables and ex- pressions, which must be handled without catastrophic slow- down.
HHVM discovers latent types by structuring its JIT around the concept of a tracelet. A tracelet is approximately a basic block specialized for a particular set of run-time types for its input values. Tracelets allow HHVM to exactly and efficiently learn the types observed by the program, while using a simple compiler. This paper shows that this approach enables HHVM to achieve high levels of perfor- mance, without sacrificing compatibility or interactivity.
Comments (0)
Sign in to post comments.