JIT compilation is done lazily on a per basic block level (so you only JIT blocks you're about to run). It keeps track of statically known information for specific basic-blocks and specializes different versions of basic blocks based on this. So if you're coming from an if-statement checking the type of X, into a new basic block, then the JIT specializes the block based on the knowledge that X indeed has said type (so it can specialize operations or skip future checks).I can highly recommend watching their presentation on it: https://www.youtube.com/watch?v=PFb5wNj2ztM
kgeist|3 years ago