I couldn't help it but upon reading the title I was instantly reminded of the 'Babbage' language which has amongst other gems a virtual time feature and conditional threats...
So, in other words, it runs the program interpreted the first time, with profiling and other execution path tracing on, then does code generation in a batch once the initial run is done. It arguably shares the advantages of JIT compilation (access to loads of data from actual execution), without its constraints (code generation no longer needs to be imperceptible, so complex rewriting is possible). The results from LuaJIT are already quite impressive; I wonder how far a JIT-style compiler could go if it actually had time to do deeper analysis.
OTOH, it's probably hard to guarantee that the first run is representative. Not sure if running e.g. a test suite with high code coverage would be close enough, for sake of the analysis. Either way, interesting idea (though, I bet the name will short circuit good discussion). It might be simpler than analyzing for potential partial evaluation.
http://news.ycombinator.com/item?id=257291