Arriving at the startup that first funded the OpenSmalltalk-VM, the first author had considerable experience maintaining the 2nd generation Deutsch Schiffmann VM written in C, and was sceptical that the Squeak Simulator would be viable for implementing a JIT. The startup wanted incremental development so as to reap value early and reduce risk, so it asked first for an interpreter using context-to-stack mapping. Writing this initial deliverable within the simulator was so much more productive and pleasurable than his previous work in C that he happily decided to stay with the simulator and invest in the necessary machine code simulation infrastructure. -- Two Decades of Smalltalk VM Development pdf
> **Abstract**. OpenSmalltalk-VM is a virtual machine (VM) for languages in the Smalltalk family (e.g. Squeak, Pharo) which is itself written in a subset of Smalltalk that can easily be translated to C. Development is done in Smalltalk, an activity we call “Simulation”. The production VM is derived by translating the core VM code to C. As a result, two execution models coexist: simulation, where the Smalltalk code is executed on top of a Smalltalk VM, and production, where the same code is compiled to an executable through a C compiler. > > In this paper, we detail the VM simulation infrastructure and we report our experience developing and debugging the garbage collector and the just-in-time compiler (JIT) within it. Then, we discuss how we use the simulation infrastructure to perform analysis on the runtime, directing some design decisions we have made to tune VM performance.
See also Feenk