堆内存的大量使用使得Java程序上数据依赖关系的精确提取仍存在许多困难.对于堆空间上的依赖提取,通常的做法是先对堆上空间进行命名,再据此分析依赖关系.然而该方法不能在多个定义间进行强更新,故分析精度不够理想.针对此问题,该文首先提出了一种点间确定别名的概念,然后用它生成强更新和相对更新来精化数据依赖分析.实验表明,与不进行强更新和相对更新的数据依赖分析方法相比,新算法能够在相对较少的额外时间消耗内,有效地提高堆空间上依赖分析的精度.
Data dependence is widely used in software engineering activities. Due to the massive use of heap objects, it is still difficult to extract them from Java programs precisely. Several methods have been proposed to address this problem. One simple but scalable method is performing dependence analysis based on heap object naming. However, such a method, although effective, is not precise enough. This paper firstly introduces a notion of interstatement must alias, and then refines dependence analysis by generating strong updates and relative updates with these aliases. Empirical results show that the proposed algorithm can effectively improve the precision of dependence analysis for heap locations with very limited analysis time increment.