skip to main content
research-article

Persistent pointer information

Authors Info & Claims
Published:09 June 2014Publication History
Skip Abstract Section

Abstract

Pointer information, indispensable for static analysis tools, is expensive to compute and query. We provide a query-efficient persistence technique, Pestrie, to mitigate the costly computation and slow querying of precise pointer information. Leveraging equivalence and hub properties, Pestrie can compress pointer information and answers pointer related queries very efficiently. The experiment shows that Pestrie produces 10.5X and 17.5X smaller persistent files than the traditional bitmap and BDD encodings. Meanwhile, Pestrie is 2.9X to 123.6X faster than traditional demand-driven approaches for serving points-to related queries.

References

  1. R. Agrawal, A. Borgida, and H. V. Jagadish. Efficient management of transitive relationships in large data and knowledge bases. In SIGMOD, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. K. Ali and O. Lhoták. Averroes: Whole-program analysis without the whole program. In ECOOP, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. E. Bodden. Pointer analyses for open programs. In O. Lhotak, Y. Smaragdakis, and M. Sridharan, editors, Pointer Analysis (Dagstuhl Seminar 13162). 2013.Google ScholarGoogle Scholar
  4. E. Bodden, A. Sewe, J. Sinschek, H. Oueslati, and M. Mezini. Taming reflection: Aiding static analysis in the presence of reflection and custom class loaders. In ICSE, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Bravenboer and Y. Smaragdakis. Strictly declarative specification of sophisticated points-to analyses. In OOPSLA, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. Comer. Analysis of a heuristic for full trie minimization. ACM Trans. Database Syst., Sept. 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. D. Comer and R. Sethi. The complexity of trie index construction. J. ACM, July 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. Das, B. Liblit, M. Fähndrich, and J. Rehof. Estimating the impact of scalable pointer analysis on optimization. In SAS, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. I. Dillig, T. Dillig, A. Aiken, and M. Sagiv. Precise and compact modular procedure summaries for heap manipulating programs. In PLDI, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. N. Dor, S. Adams, M. Das, and Z. Yang. Software validation via scalable path-sensitive value flow analysis. In ISSTA, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. N. Dor, T. Lev-Ami, S. Litvak, M. Sagiv, and D. Weiss. Customization change impact analysis for ERP professionals via program slicing. In ISSTA, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. B. Hackett and A. Aiken. How is aliasing used in systems software? In FSE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. B. Hardekopf and C. Lin. The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code. In PLDI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. B. Hardekopf and C. Lin. Exploiting pointer and location equivalence to optimize pointer analysis. In SAS, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. B. Hardekopf and C. Lin. Flow-sensitive pointer analysis for millions of lines of code. In CGO, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. M. Kleinberg. Authoritative sources in a hyperlinked environment. J. ACM, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. M. S. Lam, J. Whaley, V. B. Livshits, M. C. Martin, D. Avots, M. Carbin, and C. Unkel. Context-sensitive program analysis as database queries. In PODS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. A. Le, O. Lhoták, and L. Hendren. Using inter-procedural side-effect information in JIT optimizations. In CC, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. O. Lhoták and K.-C. A. Chung. Points-to analysis with efficient strong updates. In POPL, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. O. Lhoták and L. Hendren. Evaluating the benefits of context-sensitive points-to analysis using a BDD-based implementation. ACM Trans. Softw. Eng. Methodol., 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. L. Li, C. Cifuentes, and N. Keynes. Boosting the performance of flow-sensitive points-to analysis using value flow. In FSE, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. R. Manevich, M. Sridharan, S. Adams, M. Das, and Z. Yang. PSE: Explaining program failures via postmortem static analysis. In FSE, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. Martin, B. Livshits, and M. S. Lam. Finding application errors and security flaws using PQL: a program query language. In OOPSLA, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. N. A. Naeem and O. Lhotak. Typestate-like analysis of multiple interacting objects. In OOPSLA, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Naik, A. Aiken, and J. Whaley. Effective static race detection for Java. In PLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. Naik, C.-S. Park, K. Sen, and D. Gay. Effective static deadlock detection. In ICSE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. C. M. Papadimitriou. Computational complexity. Addison-Wesley, Reading, Massachusetts, 1994.Google ScholarGoogle Scholar
  28. A. Rountev and S. Chandra. Off-line variable substitution for scaling points-to analysis. In PLDI, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. A. Rountev and B. G. Ryder. Points-to and side-effect analyses for programs built with precompiled libraries. In CC, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. A. Rountev, B. G. Ryder, and W. Landi. Data-flow analysis of program fragments. In FSE, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. A. Rountev, M. Sharp, and G. Xu. IDE dataflow analysis in the presence of large object-oriented libraries. In CC, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Y. Smaragdakis, M. Bravenboer, and O. Lhoták. Pick your contexts well: understanding object-sensitivity. In POPL, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. M. Sridharan. Practical aspects of pointer analysis. In O. Lhotak, Y. Smaragdakis, and M. Sridharan, editors, Pointer Analysis (Dagstuhl Seminar 13162). 2013.Google ScholarGoogle Scholar
  34. M. Sridharan and R. Bodík. Refinement-based context-sensitive points-to analysis for Java. In PLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. M. Sridharan, S. J. Fink, and R. Bodik. Thin slicing. In PLDI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Y. Sui, D. Ye, and J. Xue. Static memory leak detection using full-sparse value-flow analysis. In ISSTA, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. O. Tripp, M. Pistoia, S. J. Fink, M. Sridharan, and O. Weisman. TAJ: effective taint analysis of web applications. In PLDI, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. R. Vallee-Rai, E. Gagnon, L. Hendren, P. Lam, P. Pominville, and V. Sundaresan. Optimizing Java bytecode using the Soot framework: Is it feasible? In CC, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. X. Xiao and C. Zhang. Geometric encoding: forging the high performance context sensitive points-to analysis for Java. In ISSTA, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. G. Xu and A. Rountev. Merging equivalent contexts for scalable heap-cloning-based context-sensitive points-to analysis. In ISSTA, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. G. Xu, A. Rountev, and M. Sridharan. Scaling CFL-reachability-based points-to analysis using context-sensitive must-not-alias analysis. In ECOOP, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. G. Xu, D. Yan, and A. Rountev. Static detection of loop-invariant data structures. In ECOOP, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. D. Yan, G. Xu, and A. Rountev. Demand-driven context-sensitive alias analysis for Java. In ISSTA, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. G. Yorsh, E. Yahav, and S. Chandra. Generating precise and concise procedure summaries. In POPL, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. H. Yu, J. Xue, W. Huo, X. Feng, and Z. Zhang. Level by level: making flow- and context-sensitive pointer analysis scalable for millions of lines of code. In CGO, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Q. Zhang, M. R. Lyu, H. Yuan, and Z. Su. Fast algorithms for Dyck-CFL-reachability with applications to alias analysis. In PLDI, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. X. Zheng and R. Rugina. Demand-driven alias analysis for C. In POPL, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Persistent pointer information

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 49, Issue 6
        PLDI '14
        June 2014
        598 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2666356
        • Editor:
        • Andy Gill
        Issue’s Table of Contents
        • cover image ACM Conferences
          PLDI '14: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
          June 2014
          619 pages
          ISBN:9781450327848
          DOI:10.1145/2594291

        Copyright © 2014 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 9 June 2014

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!