Effectively Exploiting Indirect Jumps (1997)
| Venue: | Software Practice and Experience |
| Citations: | 13 - 2 self |
BibTeX
@TECHREPORT{Uh97effectivelyexploiting,
author = {Gang-ryung Uh and B. Whalley and Susan I. Hruska},
title = {Effectively Exploiting Indirect Jumps},
institution = {Software Practice and Experience},
year = {1997}
}
Years of Citing Articles
OpenURL
Abstract
This dissertation describes a general code-improving transformation that can coalesce conditional branches into an indirect jump from a table. Applying this transformation allows an optimizer to exploit indirect jumps for many other coalescing opportunities besides the translation of multiway branch statements. First, dataflow analysis is performed to detect a set of coalescent conditional branches, which are often separated by blocks of intervening instructions. Second, several techniques are applied to reduce the cost of performing an indirect jump operation, often requiring the execution of only two instructions on a SPARC. Finally, the control flow is restructured using code duplication to replace the set of branches with an indirect jump. Thus, the transformation essentially provides early resolution of conditional branches that may originally have been some distance from the point where the indirect jump is inserted. The transformation can be frequently applied with often significant reductions in the number of instructions executed, total cache work, and execution time. In fact, over twice the benefit was achieved from exploiting indirect jumps as a general code-improving transformation instead of using the traditional approach of producing indirect jumps as an intermediate code generation decision. In addition, the author show that with comparable branch target buffer support, indirect jumps improve branch prediction since they cause fewer mispredictions than the set of branches they replaced.







