Was a while ago since i read the paper but at the time Agesen's CPA algorithm was among the most powerful for type inference (and while we've had a bunch of incremental improvements in the field there hasn't really been any order of magnitudes better algorithm that can handle edge cases that many dynamic languages produce), so regardless of if the Self runtime was JIT or AOT the algorithm choice showed what was feasible/usable with AOT.