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 条
  • [1] Flow insensitive points-to sets
    Anderson, P
    Binkley, D
    Rosay, G
    Teitelbaum, T
    [J]. FIRST IEEE INTERNATIONAL WORKSHOP ON SOURCE CODE ANALYSIS AND MANIPULATION, PROCEEDINGS, 2001, : 79 - 89
  • [2] Flow insensitive points-to sets
    Anderson, P
    Binkley, D
    Rosay, G
    Teitelbaum, T
    [J]. INFORMATION AND SOFTWARE TECHNOLOGY, 2002, 44 (13) : 743 - 754
  • [3] Program slicing with dynamic points-to sets
    Mock, M
    Atkinson, DC
    Chambers, C
    Eggers, SJ
    [J]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2005, 31 (08) : 657 - 678
  • [4] Compacting Points-To Sets through Object Clustering
    Barbar, Mohamad
    Sui, Yulei
    [J]. PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2021, 5 (OOPSLA):
  • [5] Implementing Hash-Consed Structures in Coq
    Braibant, Thomas
    Jourdan, Jacques-Henri
    Monniaux, David
    [J]. INTERACTIVE THEOREM PROVING, ITP 2013, 2013, 7998 : 477 - 483
  • [6] Generalized Points-to Graphs: A Precise and Scalable Abstraction for Points-to Analysis
    Gharat, Pritam M.
    Khedker, Uday P.
    Mycroft, Alan
    [J]. ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2020, 42 (02):
  • [7] Effects of different flow insensitive points-to analyses on DEF/USE sets
    Tonella, P
    [J]. PROCEEDINGS OF THE THIRD EUROPEAN CONFERENCE ON SOFTWARE MAINTENANCE AND REENGINEERING, 1999, : 62 - 69
  • [8] Probabilistic points-to analysis
    Hwang, YS
    Chen, PS
    Lee, JK
    Ju, RDC
    [J]. LANGUAGES AND COMPILERS FOR PARALLEL COMPUTING, 2003, 2624 : 290 - 305
  • [9] Searching,for points-to analysis
    Bruns, G
    Chandra, S
    [J]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2003, 29 (10) : 883 - 897
  • [10] Heterogeneous fixed points with application to points-to analysis
    Kanade, A
    Khedker, U
    Sanyal, A
    [J]. PROGRAMMING LANGUAGES AND SYSTEMS, PROCEEDINGS, 2005, 3780 : 298 - 314