Hash Consed Points-To Sets

被引:1
|
作者
Barbar, Mohamad [1 ,2 ]
Sui, Yulei [1 ]
机构
[1] Univ Technol Sydney, Ultimo, Australia
[2] CSIROs Data61, Sydney, NSW, Australia
来源
STATIC ANALYSIS, SAS 2021 | 2021年 / 12913卷
关键词
Points-to analysis; Hash consing; Memoisation;
D O I
10.1007/978-3-030-88806-0_2
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Points-to analysis is a fundamental static analysis, on which many other analyses and optimisations are built. The goal of points-to analysis is to statically approximate the set of abstract objects that a pointer can point to at runtime. Due to the nature of static analysis, points-to analysis introduces much redundancy which can result in duplicate points-to sets and duplicate set union operations, particularly when analysing large programs precisely. To improve performance, there has been extensive effort in mitigating duplication at the algorithmic level through, for example, cycle elimination and variable substitution. Unlike previous approaches which make algorithmic changes to points-to analysis, this work aims to improve the underlying data structure, which is less studied. Inspired by hash consing from the functional programming community, this paper introduces the use of hash consed points-to sets to reduce the effects of this duplication on both space and time without any high-level algorithmic change. Hash consing can effectively handle duplicate points-to set by representing points-to sets once, and referring to such representations through references, and can speed up duplicate union operations through efficient memoisation. We have implemented and evaluated our approach using 16 real-world C/C++ programs (more than 9.5 million lines of LLVM instructions). Our results show that our approach speeds up state-of-the-art Andersen's analysis by 1.85x on average (up to 3.21x) and staged flow-sensitive analysis (SFS) by 1.69x on average (up to 2.23x). We also observe an average >= 4.93x (up to >= 15.52x) memory usage reduction for SFS.
引用
收藏
页码:25 / 48
页数:24
相关论文
共 50 条
  • [21] Fast and Precise Points-to Analysis
    Lundberg, Jonas
    Gutzmann, Tobias
    Lowe, Welf
    [J]. EIGHTH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION, PROCEEDINGS, 2008, : 133 - 142
  • [22] Points-to analysis for program understanding
    Tonella, P
    Antoniol, G
    Fiutem, R
    Merlo, E
    [J]. FIFTH INTERNATIONAL WORKSHOP ON PROGRAM COMPREHENSION - IWPC '97, PROCEEDINGS, 1997, : 90 - 99
  • [23] On the non-approximability of points-to analysis
    Chakaravarthy, VT
    Horwitz, S
    [J]. ACTA INFORMATICA, 2002, 38 (08) : 587 - 598
  • [24] Points-to analysis for program understanding
    Fiutem, R
    Tonella, P
    Antoniol, G
    Merlo, E
    [J]. JOURNAL OF SYSTEMS AND SOFTWARE, 1999, 44 (03) : 213 - 227
  • [25] Collections frameworks for points-to analysis
    Gutzmann, Tobias
    Lundberg, Jonas
    Löwe, Welf
    [J]. Proceedings - 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation, SCAM 2012, 2012, : 4 - 13
  • [26] Active Learning of Points-To Specifications
    Bastani, Osbert
    Sharma, Rahul
    Aiken, Alex
    Liang, Percy
    [J]. ACM SIGPLAN NOTICES, 2018, 53 (04) : 678 - 692
  • [27] On the non-approximability of points-to analysis
    Venkatesan T. Chakaravarthy
    Susan Horwitz
    [J]. Acta Informatica, 2002, 38 : 587 - 598
  • [28] Probabilistic Points-to Analysis for Java']Java
    Sun, Qiang
    Zhao, Jianjun
    Chen, Yuting
    [J]. COMPILER CONSTRUCTION, 2011, 6601 : 62 - +
  • [29] Points-to Analysis as a System of Linear Equations
    Nasre, Rupesh
    Govindarajan, Ramaswamy
    [J]. STATIC ANALYSIS, 2010, 6337 : 422 - 438
  • [30] Aspect-Aware Points-to Analysis
    Sun, Qiang
    Zhao, Jianjun
    [J]. EIGHTH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION, PROCEEDINGS, 2008, : 143 - 152