内联启发式方法综述
本文深入探讨了编译器(特别是即时编译器)中内联(inlining)技术的核心挑战与启发式策略。内联虽能显著提升优化效果,但错误的内联会导致代码膨胀、缓存抖动,甚至阻碍其他优化。作者调查了Cinder、YJIT、SpiderMonkey、JavaScriptCore、HotSpot等主流JIT编译器的内联启发式方法,分析了它们如何权衡代码大小、调用深度、性能剖析等因素。文章还介绍了调用上下文(call context)和性能剖析(profile)对内联决策的影响,并探讨了一些前沿研究,如用神经网络训练内联决策、将内联作为搜索启发式驱动整个优化管线等。