Skip to main content

Precise Interprocedural Side-Effect Analysis

  • Conference paper
Theoretical Aspects of Computing – ICTAC 2014 (ICTAC 2014)

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

Included in the following conference series:

Abstract

A side-effect analysis computes for each program phrase a set of memory locations that may be read or written to when executing this phrase. Our analysis expresses abstract objects, points-to and aliasing information, escape information, and side effects all in terms of a single novel abstract domain, generalized access graphs. This abstract domain represents sets of access paths precisely and compactly. It is suitable for intraprocedural analysis as well as for constructing method summaries for interprocedural analysis.

We implement the side-effect analysis for Java on top of the SOOT framework and report on its application to selected examples.

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. Bocchino Jr., R.L., Adve, V.S., Dig, D., Adve, S.V., Heumann, S., Komuravelli, R., Overbey, J., Simmons, P., Sung, H., Vakilian, M.: A type and effect system for deterministic parallel Java. In: Arora, S., Leavens, G.T. (eds.) OOPSLA, pp. 97–116. ACM (2009)

    Google Scholar 

  2. Burdy, L., Cheon, Y., Cok, D.R., Ernst, M.D., Kiniry, J.R., Leavens, G.T., Leino, K.R.M., Poll, E.: An overview of JML tools and applications. Int. J. Softw. Tools Technol. Transf. 7(3), 212–232 (2005)

    Article  Google Scholar 

  3. Cahoon, B., McKinley, K.S.: Data flow analysis for software prefetching linked data structures in java. In: IEEE PACT, pp. 280–291. IEEE Computer Society (2001)

    Google Scholar 

  4. Cherem, S., Rugina, R.: A practical escape and effect analysis for building lightweight method summaries. In: Adsul, B., Odersky, M. (eds.) CC 2007. LNCS, vol. 4420, pp. 172–186. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  5. Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Păsăreanu, C.S., Zheng, H.: Bandera: Extracting finite-state models from Java source code. In: Ghezzi, C., Jazayeri, M., Wolf, A.L. (eds.) ICSE, Limerick, Ireland, pp. 439–448. ACM (June 2000)

    Google Scholar 

  6. Dasgupta, S., Karkare, A., Reddy, V.K.: Precise shape analysis using field sensitivity. ISSE 9(2), 79–93 (2013)

    Google Scholar 

  7. DeLine, R., Fähndrich, M.: Typestates for objects. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 465–490. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  8. Deutsch, A.: Interprocedural alias analysis for pointers: Beyond k-limiting. In: Sarkar, V., Ryder, B.G., Soffa, M.L. (eds.) PLDI, pp. 230–241. ACM (1994)

    Google Scholar 

  9. Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: Knoop, J., Hendren, L.J. (eds.) PLDI, Berlin, Germany, pp. 234–245. ACM Press (2002)

    Google Scholar 

  10. Gulavani, B.S., Chakraborty, S., Ramalingam, G., Nori, A.V.: Bottom-up shape analysis using lisf. ACM Trans. Program. Lang. Syst. 33(5), 17 (2011)

    Google Scholar 

  11. Hind, M., Burke, M.G., Carini, P.R., Choi, J.-D.: Interprocedural pointer alias analysis. ACM Trans. Program. Lang. Syst. 21(4), 848–894 (1999)

    Article  Google Scholar 

  12. Jones, N.D., Muchnick, S.S.: A flexible approach to interprocedural data flow analysis and programs with recursive data structures. In: Proc. of the 9th ACM Symp. POPL, Albuquerque, New Mexico, USA, pp. 66–74. ACM Press (1982)

    Google Scholar 

  13. Jonkers, H.B.M.: Abstract storage structures. In: de Bakker, van Vllet (eds.) Algorithmic Languages. IFIP, pp. 321–343 (1981)

    Google Scholar 

  14. Kang, H.-G., Han, T.: A bottom-up pointer analysis using the update history. Information & Software Technology 51(4), 691–707 (2009)

    Article  Google Scholar 

  15. Khedker, U.P., Sanyal, A., Karkare, A.: Heap reference analysis using access graphs. ACM TOPLAS 30(1) (2007)

    Google Scholar 

  16. Kuncak, V., Lam, P., Rinard, M.C.: Role analysis. In: Launchbury, J., Mitchell, J.C. (eds.) POPL, pp. 17–32. ACM (2002)

    Google Scholar 

  17. Landi, W., Ryder, B.G., Zhang, S.: Interprocedural modification side effect analysis with pointer aliasing. In: Cartwright, R. (ed.) PLDI, pp. 56–67. ACM (1993)

    Google Scholar 

  18. Larus, J.R., Hilfinger, P.N.: Detecting conflicts between structure accesses. In: Wexelblat, R.L. (ed.) PLDI, pp. 21–34. ACM (1988)

    Google Scholar 

  19. Matosevic, I., Abdelrahman, T.S.: Efficient bottom-up heap analysis for symbolic path-based data access summaries. In: Eidt, C., Holler, A.M., Srinivasan, U., Amarasinghe, S.P. (eds.) CGO, San Jose, CA, USA, pp. 252–263 (March 2012)

    Google Scholar 

  20. Murphy, B.R., Lam, M.S.: Program analysis with partial transfer functions. In: Lawall, J.L. (ed.) PEPM, pp. 94–103. ACM (2000)

    Google Scholar 

  21. Sălcianu, A., Rinard, M.: Purity and side effect analysis for Java programs. In: Cousot, R. (ed.) VMCAI 2005. LNCS, vol. 3385, pp. 199–215. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  22. Steensgaard, B.: Points-to analysis in almost linear time. In: Proc. 1996 ACM Symp. POPL, St. Petersburg, FL, USA, pp. 32–41. ACM Press (January1996)

    Google Scholar 

  23. Vallée-Rai, R., Hendren, L., Sundaresan, V., Lam, P., Gagnon, E., Co, P.: Soot - a Java optimization framework. In: Proc. CASCON 1999, pp. 125–135 (1999)

    Google Scholar 

  24. Yu, H., Xue, J., Huo, W., Feng, X., Zhang, Z.: Level by level: making flow- and context-sensitive pointer analysis scalable for millions of lines of code. In: Moshovos, A., Steffan, J.G., Hazelwood, K.M., Kaeli, D.R. (eds.) CGO, pp. 218–229. ACM (2010)

    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

Geffken, M., Saffrich, H., Thiemann, P. (2014). Precise Interprocedural Side-Effect Analysis. In: Ciobanu, G., Méry, D. (eds) Theoretical Aspects of Computing – ICTAC 2014. ICTAC 2014. Lecture Notes in Computer Science, vol 8687. Springer, Cham. https://doi.org/10.1007/978-3-319-10882-7_12

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-10882-7_12

  • Publisher Name: Springer, Cham

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

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

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics