首页> 外文会议>International Static Analysis Symposium >Unified analysis of array and object references in strongly typed languages
【24h】

Unified analysis of array and object references in strongly typed languages

机译:强类型语言中的阵列和对象引用的统一分析

获取原文

摘要

We present a simple, unified approach for the analysis and optimization of object field and array element accesses in strongly typed languages, that works in the presence of object references/pointers. This approach builds on Array SSA form [14], a uniform representation for capturing control and data flow properties at the level of array elements. The techniques presented here extend previous analyses at the array element level [15] to handle both array element and object field accesses uniformly. In the first part of this paper, we show how SSA-based program analyses developed for scalars and arrays can be extended to operate on object references in a strongly typed language like Java. The extension uses Array SSA form as its foundation by modeling object references as indices into hypothetical heap arrays. In the second part of this paper, we present two new sparse analysis algorithms using the heap array representation; one identifies redundant loads, and the other identifies dead stores. Using strong typing to help disambiguation, these algorithms are more efficient than equivalent analyses for weakly typed languages. Using the results of these algorithms, we can perform scalar replacement transformations to change operations on object fields and array elements into operations on scalar variables. We present preliminary experimental results using the Jalapeno optimizing compiler infrastructure. These results illustrate the benefits obtained by performing redundant load and dead store elimination on Java programs. Our results show that the (dynamic) number of memory operations arising from array-element and object-field accesses can be reduced by up to 28%, resulting in execution time speedups of up to 1.1×.
机译:我们呈现了一种简单,统一的方法,用于对象字段和阵列元素访问的分析和优化,在强类型的语言中,在存在对象引用/指针的情况下工作。这种方法在阵列SSA形式[14]上构建,用于在数组元素级别捕获控制和数据流性质的统一表示。这里提出的技术在阵列元素级[15]上延伸了先前的分析,以均匀地处理阵列元素和对象现场访问。在本文的第一部分,我们展示了如何为标量和数组开发的基于SSA的程序分析,以便以强大类型的语言,如Java这样的对象引用操作。扩展使用数组SSA表单作为其基础,通过将对象引用作为索引建模到假设的堆阵列中。在本文的第二部分,我们使用堆阵列表示提供了两个新的稀疏分析算法;一个标识冗余负载,另一个识别死存储。使用强类型来帮助消歧,这些算法比弱类型语言的等同分析更有效。使用这些算法的结果,我们可以执行标量替换转换,以将Object字段和数组元素的操作更改为标量变量的操作。我们使用JalapeNo优化编译器基础设施呈现初步实验结果。这些结果说明了通过对Java程序执行冗余负载和死亡存储消除而获得的好处。我们的结果表明,来自数组元素和对象 - 现场访问引起的(动态)内存操作的数量可以减少高达28%,导致执行时间加速高达1.1×。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号