Since six months we are working different optimizations such as basic block introduction in CogIt, basic block reordering to maximise fallthrough and more recently we started to write tests and fix a bit the Scorch native optimizer developed by C. Béra.
This is an amazing way to learn a domain and I’m learning a lot. Our idea is to use scenario to assess the weak points of our infrastructure and to be able to fix it in the future. Our goal is to get a better Slang, a better and more flexible VM and nativizer. And step by step we are learning things that I would have never thought I would be learning, so this is an amazing and cool feeling.
During this journey we found strange logic in Slang (the VM generator), Clang’s bugs generating assembly code that we cannot even dissambled but for plain normal little C functions, extended the ARM back-end to support more exotic instructions than the JIT on such architecture. And recently we got some a surprising behavior on carry and underflow on ARM.
Most of the work is done by Guillermo Polito and I love spending days pair programming with him on that (I’m the lurker but learning lurker). Guille wrote a little anedocte on the carry behavior on ARM and I want to share it with you.https://thepharo.dev/2021/05/23/debugging-the-jit-compiler-hotspot-detection-for-arm64/
Stef (having fun with JIT and other beasts).