Virtual machine (VM) instructions can be implemented in the VM, below the VM in the host system, or above the VM in the supported language. This paper explores how advances in VM implementation technologies affect location implementation tradeoffs for supported language instructions. Results from a Smalltalk system using Smalltalk-implemented instructions demonstrate the expected performance consequences, and the benefits when performance isn’t of primary importance.
Moving instructions at or below the VM into the supported language opens the scope of, and provides more material for, VM execution analyses. For example, stack frame elimination can be more effective when it also covers VM instructions, something that can’t be done when the instructions are implemented below the supported language.
A new Smalltalk VM explores the tradeoff contours under supported language instruction implementation. Computationally expensive data fiddling operations such as font rendering take at least an order of magnitude performance hit compared to other VMs, but more sedate operations are within a factor of two. On the other hand, and with less certainty than the performance results, the new VM is simpler to implement, is more portable across host architectures, and is a more hospitable environment for feature development.
More speculative and exploratory than definitive, this paper is well written, clearly laying out its assumptions and expectations. It’s easy to read, although keeping track of the instruction implementation location requires attention. Readers should have some familiarity with VM implementation, but knowing Smalltalk isn’t necessary. The paper is well placed within current VM implementation trends and has a justifiable dynamic language bias.