Skip to main content

Sparse Dataflow Analysis with Pointers and Reachability

  • Conference paper
Book cover Static Analysis (SAS 2014)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8723))

Included in the following conference series:

Abstract

Many static analyzers exploit sparseness techniques to reduce the amount of information being propagated and stored during analysis. Although several variations are described in the literature, no existing technique is suitable for analyzing JavaScript code. In this paper, we point out the need for a sparse analysis framework that supports pointers and reachability.We present such a framework, which uses static single assignment form for heap addresses and computes def-use information on-the-fly.We also show that essential information about dominating definitions can be maintained efficiently using quadtrees. The framework is presented as a systematic modification of a traditional dataflow analysis algorithm.

Our experimental results demonstrate the effectiveness of the technique for a suite of JavaScript programs. By also comparing the performance with an idealized staged approach that computes pointer information with a pre-analysis, we show that the cost of computing def-use information onthe- fly is remarkably small.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Balakrishnan, G., Reps, T.: Recency-abstraction for heap-allocated storage. In: Yi, K. (ed.) SAS 2006. LNCS, vol. 4134, pp. 221–239. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  2. Chase, D.R., Wegman, M., Kenneth Zadeck, F.: Analysis of pointers and structures. In: Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation (June 1990)

    Google Scholar 

  3. Chow, F., Chan, S., Liu, S.-M., Lo, R., Streich, M.: Effective representation of aliases and indirect memory operations in SSA form. In: Gyimóthy, T. (ed.) CC 1996. LNCS, vol. 1060, pp. 253–267. Springer, Heidelberg (1996)

    Chapter  Google Scholar 

  4. Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Kenneth Zadeck, F.: Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)

    Article  Google Scholar 

  5. de Berg, M., Cheong, O., van Kreveld, M., Overmars, M.: Computational Geometry: Algorithms and Applications. Springer (1997)

    Google Scholar 

  6. Har-Peled, S.: Geometric Approximation Algorithms. American Mathematical Society, Boston (2011)

    Book  MATH  Google Scholar 

  7. Hardekopf, B., Lin, C.: Semi-sparse flow-sensitive pointer analysis. In: Proc. 36th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (January 2009)

    Google Scholar 

  8. Hardekopf, B., Lin, C.: Flow-sensitive pointer analysis for millions of lines of code. In: Proc. 9th International Symposium on Code Generation and Optimization (April 2011)

    Google Scholar 

  9. Jensen, S.H., Møller, A., Thiemann, P.: Type analysis for JavaScript. In: Palsberg, J., Su, Z. (eds.) SAS 2009. LNCS, vol. 5673, pp. 238–255. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  10. Jensen, S.H., Møller, A., Thiemann, P.: Interprocedural analysis with lazy propagation. In: Cousot, R., Martel, M. (eds.) SAS 2010. LNCS, vol. 6337, pp. 320–339. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  11. Johnson, R., Pingali, K.: Dependence-based program analysis. In: Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation (June 1993)

    Google Scholar 

  12. Kam, J.B., Ullman, J.D.: Monotone data flow analysis frameworks. Acta Informatica 7, 305–317 (1977)

    Article  MATH  MathSciNet  Google Scholar 

  13. Kildall, G.A.: A unified approach to global program optimization. In: Proc. ACM Symposium on Principles of Programming Languages (October 1973)

    Google Scholar 

  14. Oh, H., Heo, K., Lee, W., Lee, W., Yi, K.: Design and implementation of sparse global analyses for C-like languages. In: Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation (June 2012)

    Google Scholar 

  15. Reif, J.H., Lewis, H.R.: Symbolic evaluation and the global value graph. In: Proc. 4th ACM Symposium on Principles of Programming Languages (January 1977)

    Google Scholar 

  16. Rosen, B.K., Wegman, M.N., Kenneth Zadeck, F.: Global value numbers and redundant computations. In: Proc. 15th ACM Symposium on Principles of Programming Languages (January 1988)

    Google Scholar 

  17. Schäfer, M., Sridharan, M., Dolby, J., Tip, F.: Dynamic determinacy analysis. In: Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation (June 2013)

    Google Scholar 

  18. Smaragdakis, Y., Bravenboer, M., Lhoták, O.: Pick your contexts well: understanding object-sensitivity. In: Proc. 38th ACM Symposium on Principles of Programming Languages (January 2011)

    Google Scholar 

  19. Staiger-Stöhr, S.: Practical integrated analysis of pointers, dataflow and control flow. ACM Transactions on Programming Languages and Systems 35(1), 5:1–5:48 (2013)

    Google Scholar 

  20. Tok, T.B., Guyer, S.Z., Lin, C.: Efficient flow-sensitive interprocedural data-flow analysis in the presence of pointers. In: Mycroft, A., Zeller, A. (eds.) CC 2006. LNCS, vol. 3923, pp. 17–31. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  21. Wegman, M.N., Kenneth Zadeck, F.: Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems 13(2), 181–210 (1991)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer International Publishing Switzerland

About this paper

Cite this paper

Madsen, M., Møller, A. (2014). Sparse Dataflow Analysis with Pointers and Reachability. In: Müller-Olm, M., Seidl, H. (eds) Static Analysis. SAS 2014. Lecture Notes in Computer Science, vol 8723. Springer, Cham. https://doi.org/10.1007/978-3-319-10936-7_13

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-10936-7_13

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-10935-0

  • Online ISBN: 978-3-319-10936-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics