Skip to content

pharo-project/pharo-vm

 
 

Repository files navigation

Pharo VM

This repository contains the code of the Pharo Virtual Machine. This implementation started as a fork of OpenSmalltalk-VM. The current project would not have been possible without all their previous work.

The current implementation has the following core features:

  • an indirect threaded bytecode compiler using GNU extensions
  • a generational scavenger garbage collector: a semi-space + nursery for the young generation, and a mark-compact collector for the old generation
  • a space for permanent objects that do not need to be scanned by the GC
  • a baseline JIT compiler that
    • translates primitive operations using IR templates
    • translates bytecode methods using a simple abstract interpretation approach to reduce memory pressure (fewer loads/stores)
  • FFI through the well-known libFFI, and support for non-blocking FFI using worker threads

For more details about the whole Pharo VM project, refer to our wiki.

Table of Contents