Abstract
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.
Therefore, 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.
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.
Therefore, 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.
Original language | English |
---|---|
Publication status | Accepted/In press - 6 Oct 2017 |
Event | Systems, Programming, Languages and Applications: Software for Humanity - Hyatt Regency, Vancouver, Canada Duration: 22 Oct 2017 → 27 Oct 2017 |
Conference
Conference | Systems, Programming, Languages and Applications |
---|---|
Abbreviated title | SPLASH 2017 |
Country/Territory | Canada |
City | Vancouver |
Period | 22/10/17 → 27/10/17 |
Keywords
- just-in-time compilation
- debug
- cross-isa
- qemu
- maxine vm
- metacircular