Phase detection using trace compilation

PPPJ '09: Proceedings of the 7th International Conference on Principles and Practice of Programming in Java(2009)

引用 13|浏览2
暂无评分
摘要
Dynamic compilers can optimize application code specifi- cally for observed code behavior. Such behavior does not have to be stable across the entire program execution to be beneficial for optimizations, it must only be stable for a certain program phase. To specialize code for a program phase, it is necessary to detect when the execution behavior of the program changes (phase change). Trace-based compi- lation is an efficient method to detect such phase changes. A trace tree is a collection of frequently executed code paths through a code region, which is assembled dynamically at run time as the program executes. Program execution tends to remain within such a trace tree during a stable phase, whereas phase changes cause a sudden increase in side ex- its from the trace tree. Because trace trees are recorded at run time by observing the interpreter, the actual values of variables and expressions are also available. This allows a definition of phases based not only on recurring control flow, but also on recurring data values. The compiler can use con- stant values for variables that change their value rarely and rely on phase detection to handle the case when the variable value actually changes. Our evaluation shows that phase detection based on trace trees results in phases that match the intuitive expectation of a programmer and that are also useful for compiler optimizations.
更多
查看译文
关键词
code region,trace compilation,stable phase,code path,trace tree,optimization,phase detection,data flow,just-in- time compilation,phase change,application code,program phase,java,run time,certain program phase,dynamic compilation,control flow,compiler optimization,just in time compiler,just in time compilation
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要