Extending current Virtual Machine implementations to new Instruction Set Architectures entails a significant programming and debugging effort. meta-circular VMs add another level of complexity towards this aim since they have to compile themselves with the same compiler that is being extended. Having low-level debugging tools is of vital importance in decreasing development time and bugs introduced.
In this paper we describe our experiences in extending Maxine VM to the ARMv7 architecture. During that process, we developed a QEMU-based toolchain which enables us to debug a wide range of VM features in an automated way. The presented toolchain has been integrated with the JUNIT testing framework of Maxine VM and is capable of executing from simple assembly instructions to fully JIT compiled code. Furthermore, it is fully open-sourced and can be adapted to any other VMs seamlessly. Finally, we describe a compiler-assisted methodology that helps us identify, at runtime, faulty methods that generate no stack traces, in an automatic and fast manner.
Tue 24 Oct
|10:30 - 10:40|
|10:40 - 11:20|
|11:20 - 12:00|