###
Journal of Software:2011.22(6):1140-1154

Java 指针指向分析优化
李倩,汤恩义,戴雪峰,王林章,赵建华
(计算机软件新技术国家重点实验室(南京大学),江苏 南京 210093;南京大学 计算机科学与技术系,江苏 南京 210093)
Optimization of Points-to Analysis for Java
LI Qian,TANG En-Yi,DAI Xue-Feng,WANG Lin-Zhang,ZHAO Jian-Hua
(State Key Laboratory for Novel Software Technology (Nanjing University), Nanjing 210093, China; Department of Computer Science and Technology, Nanjing University, Nanjing 210093, China)
Abstract
Chart / table
Reference
Similar Articles
Article :Browse 7224   Download 5531
Received:July 10, 2010    Revised:March 29, 2011
> 中文摘要: 指针指向分析的主要目的是静态地获取程序在运行时刻的指针指向信息.基于Andersen 算法,设计了一种有效的、上下文敏感的指针指向分析算法,支持继承、字段对象等语言特性.不同对象的字段在算法中被分别处理,同时,算法对复合类型的对象实现了基于字段的处理.为了提高算法的效率和可扩展性,引入了两种优化方式:一种是结点间的拓扑排序以降低分析过程中的迭代次数;另一种是在线的环路侦测与消除,它与拓扑排序过程同步实现,有效地提高了处理效率.实验数据表明,该算法可以用来为较大规模的Java 代码生成精确的指向关系集合.
Abstract:Points-to analysis mainly aims to attain the runtime points-to sets of program variables. This paper describes the design and implementation of an efficient Andersen-style, context-sensitive points-to analysis for Java code. The implementation supports language features such as inheritance, polymorphism, and field objects. The study tracks the fields of individual objects separately and makes the algorithm in field-sensitive style for aggregate objects. To improve the efficiency and scalability of the algorithm, this study employs two kinds of optimizations, nodes topology construction with concomitance on-line cycle detection and cycle elimination. Experiment results show that this algorithm can be used to compute precise points-to sets for large-scale Java programs.
文章编号:     中图分类号:    文献标志码:
基金项目:国家自然科学基金(90818022, 91018006, 61021062); 国家重点基础研究发展计划(973)(2009CB320702); 核高基项目(2009z01036-001-001-3) 国家自然科学基金(90818022, 91018006, 61021062); 国家重点基础研究发展计划(973)(2009CB320702); 核高基项目(2009z01036-001-001-3)
Foundation items:
Reference text:

李倩,汤恩义,戴雪峰,王林章,赵建华.Java 指针指向分析优化.软件学报,2011,22(6):1140-1154

LI Qian,TANG En-Yi,DAI Xue-Feng,WANG Lin-Zhang,ZHAO Jian-Hua.Optimization of Points-to Analysis for Java.Journal of Software,2011,22(6):1140-1154