Virtual machines (VMs) emulating hardware devices are gen-
erally implemented in low-level languages for performance reasons. This
results in unmaintainable systems that are difficult to understand. In
this paper we report on our experience using the
PyPy
toolchain to
improve the portability and reduce the complexity of whole-system VM
implementations. As a case study we implement a VM prototype for a
Nintendo Game Boy, called
PyGirl
, in which the high-level model is
separated from low-level VM implementation issues. We shed light on
the process of refactoring from a low-level VM implementation in Java
to a high-level model in RPython. We show that our whole-system VM
written with
PyPy
is significantly less complex than standard imple-
mentations, without substantial loss in performance.
* We show how the execution and implementation details of WSVMs are separated in the same way as those of HLLVMs.
* We show how the use of preprocessing-time meta-programming minimizes the code and decreases the complexity.
* We provide a sample implementation of a WSVM prototype for PyPy which exhibits a simplified implementation without substantial loss of performance (about 40% compared to a similar WSVM in Java).
(groan, since when did Java become the gold standard for "fast"? I know, I know, "with a sufficiently advanced JIT...")
(I (sincerely, seriously) apologize if this is not nearly theoretical enough for a forum like LtU.)
Recent comments
22 weeks 6 days ago
23 weeks 1 hour ago
23 weeks 1 hour ago
45 weeks 1 day ago
49 weeks 3 days ago
51 weeks 9 hours ago
51 weeks 9 hours ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago