Hacker News new | ask | show | jobs
by Qem 1436 days ago
> Switches the default bytecode set to SistaV1. This lays the basis for a new generation of VM optimizations (Sista: Speculative Inlining Smalltalk Architecture). With Sista, blocks are represented by CompiledBlocks and instantiated as FullBlockClosures, the stability of which has been improved in the course of this switch (fixed bugs in FullBlockClosure >> #= and InstructionStream >> #scanForInstructionSequence:). Provides new encoding accessors.

Nice to see Sista finally seeing the light of the day. Hope it will be available Pharo as well, by the next release. That's awesome!

2 comments

My understanding is that the optimizations haven't been implemented yet in the VM, but that this initial step is to enable the new bytecodes. Could be wrong.
The idea in sista is to do all fancy optimizations in the image by translating bytecodes to different bytecodes. The VM (called Cog, in this case) just has to translate the bytecodes to native binaries on demand.

This requires new bytecodes, like unchecked fast primitive calls, so that sista can have Cog generate better binaries.

Is there a specification for the SistaV1 bytecodes?
This paper compares the "blue book style" bytecodes (also known as V3 bytecodes) with the new ones used by sista:

https://www.researchgate.net/publication/280793584_A_bytecod...