Allocation removal by partial evaluation in a tracing JIT: http://dl.acm.org/citation.cfm?id=1929508
Allocation Sinking Optimization: http://wiki.luajit.org/Allocation-Sinking-Optimization
Allocation removal by partial evaluation in a tracing JIT: http://dl.acm.org/citation.cfm?id=1929508
Allocation Sinking Optimization: http://wiki.luajit.org/Allocation-Sinking-Optimization
This is not correct. V8 does sink allocations into deoptimization exits. It does not sink allocations out of the loops at the moment though.
> I think it is unknown how to do this well in method JITs
I don't think it is unknown. The main simplification for tracing JITs comes from the fact that deoptimization and loop-exit can be elegantly treated within the uniform framework, which is a little bit harder for method JIT and you need to find right place to insert materialization instruction after the loop based on post-domination. Nothing hard or unsolvable though.