Visualizing The Intermediate Representation of Just-in-Time Compilers
Just-in-Time (JIT) compilers are used by many modern programming systems in order to improve performance. Bugs in JIT compilers provide exploitable security vulnerabilities and debugging them is difficult as they are large, complex, and dynamic. Current debugging and visualization tools deal with static code and are not suitable in this domain. We describe a new approach for simplifying the large and complex intermediate representation, generated by a JIT compiler and visualize it with a metro map metaphor to aid developers in debugging. Experiments using our prototype implementation on Google's V8 JavaScript interpreter and TurboFan JIT compiler demonstrate that it can help identify and localize buggy code.
READ FULL TEXT