Abstract
Points-to analysis is a static analysis technique which computes the relationships between the program variables and the heap references. It has been widely used in program optimization, program understanding, and error detection. Inclusion-based points-to analysis computes the points-to sets in a program by translating the program into a set of inclusion constraints on the points-to sets and then solving them to yield the desired results. Yet the analysis faces a difficulty in that a program can be frequently changed in its development, and great efforts may be exhausted to re-generate the inclusion constraints and re-solve them. In this paper, we extend the inclusion-based points-to analysis to an incremental one called Inc-PTA. The essential idea of Inc-PTA is to sum up the program changes into an editscript of a sequence of successive edits, and then to propagate the edits to the constraints followed by taking a demand-driven points-to analysis of the program. We also discuss about the correctness of Inc-PTA, and believe that Inc-PTA can provide with a cost-effective solution to incremental points-to analysis.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Steensgaard, B.: Points-to analysis in almost linear time. In: Boehm Jr., H.J., Shackle, G.L.S. (eds.) POPL, pp. 32–41. ACM Press, New York (1996)
Andersen, L.O.: Program analysis and specialization for the c programming language. Master’s thesis, University of Copenhagen (1994)
Méndez-Lojo, M., Mathew, A., Pingali, K.: Parallel inclusion-based points-to analysis. In: Cook, W.R., Clarke, S., Rinard, M.C. (eds.) OOPSLA, pp. 428–443. ACM, New York (2010)
Méndez-Lojo, M., Burtscher, M., Pingali, K.: A gpu implementation of inclusion-based points-to analysis. In: Ramanujam, J., Sadayappan, P. (eds.) PPOPP, p. 107. ACM, New York (2012)
Lhoták, O., Smaragdakis, Y., Sridharan, M.: Pointer analysis (dagstuhl seminar 13162). Dagstuhl Rep. 3(4), 91–113 (2013)
Rountev, A., Kagan, S., Marlowe, T.: Interprocedural dataflow analysis in the presence of large libraries. In: Mycroft, A., Zeller, A. (eds.) CC 2006. LNCS, vol. 3923, pp. 2–16. Springer, Heidelberg (2006)
Chase, D.R., Wegman, M.N., Zadeck, F.K.: Analysis of pointers and structures. In: Fischer, B.N. (ed.) PLDI, pp. 296–310. ACM, New York (1990)
Hardekopf, B., Lin, C.: Flow-sensitive pointer analysis for millions of lines of code. In: IEEE CGO, pp. 289–298 (2011)
Lu, Y., Shang, L., Xie, X., Xue, J.: An incremental points-to analysis with CFL-reachability. In: Jhala, R., De Bosschere, K. (eds.) Compiler Construction. LNCS, vol. 7791, pp. 61–81. Springer, Heidelberg (2013)
Jenista, J., Eom, Y., Demsky, B.: Using disjoint reachability for parallelization. In: Knoop, J. (ed.) CC 2011. LNCS, vol. 6601, pp. 198–224. Springer, Heidelberg (2011)
Vallee-Rai, R., Hendren, L.J.: Jimple: Simplifying java bytecode for analyses and transformations (1998)
Lhoták, O., Hendren, L.: Scaling java points-to analysis using SPARK. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 153–169. Springer, Heidelberg (2003)
Gall, H., Fluri, B., Pinzger, M.: Change analysis with evolizer and changedistiller. IEEE Softw. 26(1), 26–33 (2009)
Fluri, B., Würsch, M., Pinzger, M., Gall, H.: Change distilling: tree differencing for fine-grained source code change extraction. IEEE Trans. Softw. Eng. 33(11), 725–743 (2007)
Vallée-Rai, R.C.P., Gagnon, E., Hendren, L.J., Lam, P., Sundaresan, V.: CASCON. In: MacKay, S.A., Johnson, J.H. (eds.) Soot-A Java Bytecode Optimization Framework, p. 13. IBM, San Diego (1999)
Hardekopf, B., Lin, C.: The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code. In: Ferrante, J., McKinley, K.S. (eds.) PLDI, pp. 290–299. ACM, New York (2007)
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)
Hardekopf, B., Lin, C.: Semi-sparse flow-sensitive pointer analysis. In: Shao, Z., Pierce, B.C. (eds.) POPL, pp. 226–238. ACM, New York (2009)
Gulwani, S., Srivastava, S., Venkatesan, R.: Program analysis as constraint solving. In: Gupta, R., Amarasinghe, S.P. (eds.) PLDI, pp. 281–292. ACM, New York (2008)
Visser, W., Geldenhuys, J., Dwyer, M.B.: Green: reducing, reusing and recycling constraints in program analysis. In: Tracz, W., Robillard, M.P., Bultan, T. (eds.) SIGSOFT FSE, p. 58. ACM, New York (2012)
Allen, J.R., Kennedy, K., Porterfield, C., Warren, J.D.: Conversion of control dependence to data dependence. In: Wright, J.R., Landweber, L., Demers, A.J., Teitelbaum, T. (eds.) POPL, pp. 177–189. ACM, New York (1983)
Pollock, L.L., Soffa, M.L.: An incremental version of iterative data flow analysis. IEEE Trans. Soft. Eng. 15(12), 1537–1549 (1989)
Burke, M.G., Ryder, B.G.: A critical analysis of incremental iterative data flow analysis algorithms. IEEE Trans. Soft. Eng. 16(7), 723–728 (1990)
Carroll, S., Polychronopoulos, C.D.: A framework for incremental extensible compiler construction. Int. J. Parallel Program. 32(4), 289–316 (2004)
Carroll, S., Polychronopoulos, C.D.: A framework for incremental extensible compiler construction. In: Banerjee, U., Gallivan, K., González, A. (eds.) ICS, pp. 53–62. ACM, New York (2003)
Yur, J.S., Ryder, B.G., Landi, W.: An incremental flow- and context-sensitive pointer aliasing analysis. In: Boehm, B.W., Garlan, D., Kramer, J. (eds.) ICSE, pp. 442–451. ACM, New York (1999)
Vivien, F., Rinard, M.C.: Incrementalized pointer and escape analysis. In: Burke, M., Soffa, M.L. (eds.) PLDI, pp. 35–46. ACM, New York (2001)
Saha, D., Ramakrishnan, C.R.: Incremental and demand-driven points-to analysis using logic programming. In: Barahona, P., Felty, A.P. (eds.) PPDP, pp. 117–128. ACM, New York (2005)
Kodumal, J., Aiken, A.: Banshee: a scalable constraint-based analysis toolkit. In: Hankin, C., Siveroni, I. (eds.) SAS 2005. LNCS, vol. 3672, pp. 218–234. Springer, Heidelberg (2005)
Acknowledgments
We would like to thank the anonymous reviewers for their valuable and thorough comments. This work is supported by the National Natural Science Foundation of China (Grant No. 91118004 and 61100051).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Chen, Y., Shi, Q., Miao, W. (2015). Incremental Points-to Analysis for Java via Edit Propagation. In: Liu, S., Duan, Z. (eds) Structured Object-Oriented Formal Language and Method. SOFL+MSVL 2014. Lecture Notes in Computer Science(), vol 8979. Springer, Cham. https://doi.org/10.1007/978-3-319-17404-4_11
Download citation
DOI: https://doi.org/10.1007/978-3-319-17404-4_11
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-17403-7
Online ISBN: 978-3-319-17404-4
eBook Packages: Computer ScienceComputer Science (R0)