Sentinel PRE: hoisting beyond exception dependency with dynamic deoptimization

Sentinel PRE: hoisting beyond exception dependency with dynamic deoptimization
复制标题

Sentinel PRE:通过动态去优化提升超越异常依赖

DOI:
10.1109/cgo.2005.32
复制
发表时间:
2005
期刊:
International Symposium on Code Generation and Optimization
影响因子:
--
通讯作者:
K. Hiraki
K. Hiraki
中科院分区:
--
文献类型:
--
作者:
Rei Odaira;K. Hiraki

文献摘要

被引文献

相似文献

除了现有的部分冗余消除(PRE)算法无法删除许多除指令,因为必须在除外指令之间保留订购约束,我们称之为异常依赖性。在这项工作中,我们提出了Sentinel Pre,这是一种克服异常依赖性并保留程序语义的算法。 Sentinel前首先提起措施,除指令外,没有考虑例外依赖性,然后通过快速分析检测异常重新排序。如果在重新排序的指令中发生例外,则在吊装之前将代码取代到一个代码中。由于我们在实际程序中很少遇到异常,因此在几乎所有情况下都执行了优化的代码。我们在Java恰当的编译器中实施了Sentinel Pre,并进行了实验。结果表明,在Java Grande论坛基准套件中,LU计划的性能提高了9.0%。
Many excepting instructions cannot be removed by existing partial redundancy elimination (PRE) algorithms because the ordering constraints must be preserved between the excepting instructions, which we call exception dependencies. In this work, we propose Sentinel PRE, a PRE algorithm that overcomes exception dependencies and retains program semantics. Sentinel PRE first hoists excepting instructions without considering exception dependencies, and then detects exception reordering by fast analysis. If an exception occurs at a reordered instruction, it deoptimizes the code into the one before hoisting. Since we rarely encounter exceptions in real programs, the optimized code is executed in almost all cases. We implemented Sentinel PRE in a Java just-in-time compiler and conducted experiments. The results show 9.0% performance improvement in the LU program in the Java Grande Forum Benchmark Suite.