The complexity of the slowest TBAA (TFM-TBAA) is dominated by Step 2 of TM-TBAA (Figure 3).
In this section, we describe two optimizations, redundant load elimination (RLE) and method resolution, that use TBAA.
Here we describe three straightforward method resolution techniques that do not use pointer analysis--type hierarchy analysis, intraprocedural type propagation, and interprocedural type propagation--and then extend them to use TBAA to analyze pointer dereferences.
Adding TBAA increases the complexity because it propagates types not just to variables but also to aliases which are represented by types and fields in types.
In this section, we describe the metrics we used to evaluate TBAA (Section 5.
We evaluate TBAA with respect to RLE and method resolution using static and dynamic metrics, and a limit analysis.
This section presents the results of evaluating TBAA using the metrics described in Section 5.
3 evaluate TBAA with respect to RLE using static, dynamic, and limit evaluations respectively.
The table shows that TBAA based on field declarations (TF-TBAA) is much more precise than the basic TBAA (T-TBAA), and that selective type merging offers little added precision.
Table VII evaluates our alias analyses using another static metric: the percent of access paths that RLE removes statically in each of our benchmark programs for each variant of TBAA.
By comparing Table VI and Table VII, we see that the reduction in alias pairs caused by considering field declarations in TBAA translates into more optimization opportunities: TF-TBAA finds more redundant loads than T-TBAA.
This section measures simulated execution-time impact of TBAA on RLE for our noninteractive benchmarks.