Guille Polito
Ignacio Losiggio
Inline caches speed up message sends by storing recent types and methods per call site.
Traditionally such caches are implemented using code patching: message sends use a fixed sequence of machine instructions that is later rewritten.
This design requires that machine code is not only executable but also writable, making patching expensive, preventing the sharing of machine code and being vulnerable to attacks.
This talks explores a different design of inline caches avoiding code patching, and the fight to obtain decent performance against our arch enemy: the branch predictor.
Smalltalks 2025