Impressive technical work and authorship. My quibble, which seems significant in context, is what happened with AoT?
Unless it's a runtime-only optimization, like guarded devirtualization... there's no straightforward way for an AOT compiler to do that without profiling data.