ABSTRACT
Multi-tiered virtual-machine (VM) environments with Just-In-Time (JIT) compilers are essential for optimizing dynamic language program performance, but comprehending and debugging them is challenging. In this paper, we introduce Derir; a novel tool for tackling this issue in the context of Ř, a JIT compiler for R. Derir demystifies Ř, catering to both beginners and experts. It allows users to inspect the system's runtime state, make modifications, and visualize contextual specializations. With a user-friendly interface and visualization features, Derir empowers developers to explore, experiment, and gain insights into the inner workings of a specializing JIT system. We evaluate the effectiveness and usability of our tool through real-world use cases, demonstrating its benefits in learning as well as debugging scenarios. We believe that our tool holds promise for enhancing the understanding and debugging of complex VMs.
- Carl Friedrich Bolz-Tereick. 2021. Some way that PyPy uses Graphviz. https://github.com/jimmyhmiller/PlayGround Google Scholar
- Arthur Charguéraud, Alan Schmitt, and Thomas Wood. 2018. JSExplain: A Double Debugger for JavaScript. In Companion Proceedings of the The Web Conference 2018 (WWW ’18). International World Wide Web Conferences Steering Committee, Republic and Canton of Geneva, CHE. 691–699. isbn:9781450356404 https://doi.org/10.1145/3184558.3185969 Google ScholarDigital Library
- Maxime Chevalier-Boisvert, Noah Gibbs, Jean Boussier, Si Xing (Alan) Wu, Aaron Patterson, Kevin Newton, and John Hawthorn. 2021. YJIT: A Basic Block Versioning JIT Compiler for CRuby. In Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL 2021). Association for Computing Machinery, New York, NY, USA. 25–32. isbn:9781450391092 https://doi.org/10.1145/3486606.3486781 Google ScholarDigital Library
- Marcus Ciolkowski, Simon Faber, and Sebastian von Mammen. 2017. 3-D Visualization of Dynamic Runtime Structures. In Proceedings of the 27th International Workshop on Software Measurement and 12th International Conference on Software Process and Product Measurement (IWSM Mensura ’17). Association for Computing Machinery, New York, NY, USA. 189–198. isbn:9781450348539 https://doi.org/10.1145/3143434.3143435 Google ScholarDigital Library
- Peter Eades. 2023. Graphviz. https://graphviz.org/ Google Scholar
- Olivier Flückiger, Guido Chari, Jan Ječmen, Ming-Ho Yee, Jakob Hain, and Jan Vitek. 2019. R Melts Brains: An IR for First-Class Environments and Lazy Effectful Arguments. In Proceedings of the 15th ACM SIGPLAN International Symposium on Dynamic Languages (DLS 2019). Association for Computing Machinery, New York, NY, USA. 55–66. isbn:9781450369961 https://doi.org/10.1145/3359619.3359744 Google ScholarDigital Library
- Olivier Flückiger, Guido Chari, Ming-Ho Yee, Jan Ječmen, Jakob Hain, and Jan Vitek. 2020. Contextual Dispatch for Function Specialization. Proc. ACM Program. Lang., 4, OOPSLA (2020), https://doi.org/10.1145/3428288 Google ScholarDigital Library
- Philip J. Guo. 2013. Online Python Tutor: Embeddable Web-Based Program Visualization for Cs Education. In Proceeding of the 44th ACM Technical Symposium on Computer Science Education (SIGCSE ’13). Association for Computing Machinery, New York, NY, USA. 579–584. isbn:9781450318686 https://doi.org/10.1145/2445196.2445368 Google ScholarDigital Library
- Tomas Kalibera, Petr Maj, Floreal Morandat, and Jan Vitek. 2014. A Fast Abstract Syntax Tree Interpreter for R. SIGPLAN Not., 49, 7 (2014), mar, 89–102. issn:0362-1340 https://doi.org/10.1145/2674025.2576205 Google ScholarDigital Library
- Andrew Luxton-Reilly, Emma McMillan, Elizabeth Stevenson, Ewan Tempero, and Paul Denny. 2018. Ladebug: An Online Tool to Help Novice Programmers Improve Their Debugging Skills. In Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE 2018). Association for Computing Machinery, New York, NY, USA. 159–164. isbn:9781450357074 https://doi.org/10.1145/3197091.3197098 Google ScholarDigital Library
- Microsoft R Open. 2015. Microsoft R Open. https://github.com/microsoft/microsoft-r-open Google Scholar
- Jimmy Miller. 2022. YJIT visualizer frontend. https://github.com/jimmyhmiller/PlayGround Google Scholar
- Oracle Corporation. 2023. Java VisualVM. https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/ Google Scholar
- Dominic Parfitt. 2022. graphviz-react. https://github.com/DomParfitt/graphviz-react Google Scholar
- Jeremy Singer and Chris Kirkham. 2006. Visualized Adaptive Runtime Subsystems. In Proceedings of the 2006 ACM Symposium on Software Visualization (SoftVis ’06). Association for Computing Machinery, New York, NY, USA. 195–196. isbn:1595934642 https://doi.org/10.1145/1148493.1148541 Google ScholarDigital Library
- Lukas Stadler, Adam Welc, Christian Humer, and Mick Jordan. 2016. Optimizing R Language Execution via Aggressive Speculation. SIGPLAN Not., 52, 2 (2016), nov, 84–95. issn:0362-1340 https://doi.org/10.1145/3093334.2989236 Google ScholarDigital Library
- Luke Tierney. 2019. A Byte Code Compiler for R. http://www.stat.uiowa.edu/~luke/R/compiler/compiler.pdf Google Scholar
- Thomas Wuerthinger. 2007. Ideal Graph visualizer. https://ssw.jku.at/General/Staff/TW/igv.html Google Scholar
- Thomas Würthinger, Michael L. Van De Vanter, and Doug Simon. 2010. Multi-level Virtual Machine Debugging Using the Java Platform Debugger Architecture. In Perspectives of Systems Informatics, Amir Pnueli, Irina Virbitskaite, and Andrei Voronkov (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 401–412. isbn:978-3-642-11486-1 https://doi.org/10.1007/978-3-642-11486-1_34 Google ScholarDigital Library
Index Terms
- Debugging Dynamic Language Features in a Multi-tier Virtual Machine
Recommendations
Optimization of dynamic languages using hierarchical layering of virtual machines
DLS '09Creating an interpreter is a simple and fast way to implement a dynamic programming language. With this ease also come major drawbacks. Interpreters are significantly slower than compiled machine code because they have a high dispatch overhead and ...
Optimization of dynamic languages using hierarchical layering of virtual machines
DLS '09: Proceedings of the 5th symposium on Dynamic languagesCreating an interpreter is a simple and fast way to implement a dynamic programming language. With this ease also come major drawbacks. Interpreters are significantly slower than compiled machine code because they have a high dispatch overhead and ...
Post-copy based live virtual machine migration using adaptive pre-paging and dynamic self-ballooning
VEE '09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environmentsWe present the design, implementation, and evaluation of post-copy based live migration for virtual machines (VMs) across a Gigabit LAN. Live migration is an indispensable feature in today's virtualization technologies. Post-copy migration defers the ...
Comments