A Multi-Domain Incremental Analysis Engine and its Application to Incremental Resource Analysis

Thumbnail Image
Full text at PDC
Publication Date
Albert Albiol, Elvira
Puebla, Germán
Román Díez, Guillermo
Advisors (or tutors)
Journal Title
Journal ISSN
Volume Title
Google Scholar
Research Projects
Organizational Units
Journal Issue
The aim of incremental analysis is, given a program, its analysis results, and a series of changes to the program, to obtain the new analysis results as eficiently as possible and, ideally, without having to (re-)analyze fragments of code which are not affected by the changes. Incremental analysis can significantly reduce both the time and the memory requirements of analysis. The first contribution of this article is a multi-domain incremental fixed-point algorithm for a sequential Java-like language. The algorithm is multi-domain in the sense that it interleaves the (re-)analysis for multiple domains by taking into account dependencies among them. Importantly, this allows the incremental analyzer to invalidate only those analysis results previously inferred by certain dependent domains. The second contribution is an incremental resource usage analysis which, in its first phase, uses the multi-domain incremental fixed-point algorithm to carry out all global pre-analyses required to infer cost in an interleaved way. Such resource analysis is parametric on the cost metrics one wants to measure (e.g., number of executed instructions, number of objects created, etc.). Besides, we present a novel form of cost summaries which allows us to incrementally reconstruct only those components of cost functions affected by the changes. Experimental results in the costa system show that the proposed incremental analysis provides significant performance gains, ranging from a speedup of 1.48 up to 5.13 times faster than non-incremental analysis.
UCM subjects
1] E. Albert, P. Arenas, S. Genaim, M. Gómez-Zamalloa, and G. Puebla. Cost Analysis of Concurrent OO programs. In Proc. of APLAS'11, volume 7078 of LNCS, pages 238-254. Springer, December 2011. [2] E. Albert, P. Arenas, S. Genaim, and G. Puebla. Closed-Form Upper Bounds in Static Cost Analysis. Journal of Automated Reasoning,46(2):161-203, 2011. [3] E. Albert, P. Arenas, S. Genaim, G. Puebla, and D. Zanardini. Cost Analysis of Object-Oriented Bytecode Programs. Theoretical Computer Science, 413(1):142-159, 2012. [4] E. Albert, P. Arenas, S. Genaim, and D. Zanardini. Task-Level Analysis for a Language with Async-Finish Parallelism. In Proc. of LCTES'11, pages 21-30. ACM Press, 2011. 38 [5] E. Albert, J. Correas, G. Puebla, and G. Román-Díez. Incremental Resource Usage Analysis. In Proc. of PEPM'12, pages 25{34. ACM Press,2012. [6] E. Albert, S. Genaim, and M. Gómez-Zamalloa. Parametric Inference of Memory Requirements for Garbage Collected Languages. In Proc. of ISMM'10, pages 121{130. ACM Press, 2010. [7] E. Albert, S. Genaim, and M. Gómez-Zamalloa. Heap Space Analysis for Garbage Collected Languages. Science of Computer Programming, 2012.To appear. [8] E. Albert, S. Genaim, and A. N. Masud. More precise yet widely applicable cost analysis. In Proc. of MCAI'11, volume 6538 of LNCS, pages 38-53. Springer, 2011. [9] David F. Bacon and Peter F. Sweeney. Fast static analysis of C++ virtual function calls. Proc. of OPSLA'96, SIGPLAN Notices, 31(10):324-341, October 1996. [10] Paul Clements and Linda Northrop. Software Product Lines: Practices and Patterns, volume 0201703327. ddison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2001. [11] P. Cousot and R. Cousot. Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proc. of POPL'77, pages 238{252. ACM Press, 1977. [12] P. Cousot and R. Cousot. Modular Static Program Analysis, invited paper. In Compiler Construction, 2002. [13] I. Dillig, T. Dillig, and A. Aiken. Sound, complete and scalable pathsensitive analysis. In PLDI, pages 270{280. ACM, 2008. [14] D. Kapur E. Rodriguez-Carbonell. Generating all polynomial invariants in simple loops. Journal of Symbolic Computation, 42(4):443{476, 2007. [15] C. A. Lakos G. Lewis. Towards incremental analysis. In Workshop on Formal Methods for Dependable Systems (FMDS), 1998. [16] S. R. Ganov, S. Khurshid, and D. E. Perry. Annotations for Alloy: Automated Incremental Analysis Using Domain Specific Solvers. In ICFEM'12,LNCS 7635, pages 414{429. Springer, 2012. [17] S. Genaim and F. Spoto. Constancy Analysis. In 10th Workshop on Formal Techniques for Java-like Programs, 2008. [18] S. Gulwani, K. K. Mehra, and T. M. Chilimbi. Speed: Precise and Eficient Static Estimation of Program Computational Complexity. In Proc.of POPL'09, pages 27-139. ACM, 2009. 39 [19] G. Hedin. An object-oriented notation for attribute grammars. In Proc. of ECOOP'89, pages 329{345, 1989. [20] M. Hermenegildo, G. Puebla, K. Marriott, and P. Stuckey. Incremental Analysis of Constraint Logic Programs. ACM TOPLAS, 22(2):187-223, March 2000. [21] J. Hoffmann, K. Aehlig, and M. Hofmann. Multivariate Amortized Resource Analysis. In Proc. of POPL'11, pages 357{370. ACM, 2011. [22] L. Hubert, T. P. Jensen, and D. Pichardie. Semantic foundations and inference of non-null annotations. In Procs. of FMOODS'08, volume 5051 of LNCS, pages 132{149. Springer, 2008. [23] E. B. Johnsen, R. Hähnle, J. Schffafer, R. Schlatte, and M. Steffen. ABS: A Core Language for Abstract Behavioral Specification. In Proc. of FMCO'10 (Revised Papers), volume 6957 of LNCS, pages 142-164. Springer, 2012. [24] M. Kero, P. Pietrzak, and Nordlander J. Live Heap Space Bounds for Real-Time Systems. In Proc. of APLAS'10, LNCS 6461, pages 287-303. Springer, 2010. [25] Francesco Logozzo. Practical verification for the working programmer with codecontracts and abstract interpretation - (invited talk). In Proc. of VM- CAI'11, volume 6538 of LNCS, pages 19-22. Springer, 2011. [26] F. Nielson, H. R. Nielson, and C. Hankin. Principles of Program Analysis. Springer, 1999. [27] S. Person, G. Yang, N. Rungta, and S. Khurshid. Directed Incremental Symbolic Execution. In PLDI'11, pages 504-515. ACM, 2011. [28] Apache Commons Project. [29] T. W. Reps, S. Horwitz, and S. Sagiv. Precise interprocedural data ow analysis via graph reachability. In Proc. POPL'95, pages 49-61, 1995. [30] S. Rossignoli and F. Spoto. Detecting Non-Cyclicity by Abstract Compilation into Boolean Functions. In Proc. of VMCAI'06, volume 3855 of LNCS, pages 95-110. Springer, 2006. [31] I. Schaefer, L. Bettini, V. Bono, F. Damiani, and N. Tanzarella. Deltaoriented programming of software product lines. In Proc. of SPLC'10, pages 77-91. ACM, 2010. [32] S. Secci and F. Spoto. Pair-Sharing Analysis of Object-Oriented Programs. In Proc. of SAS'05, volume 3672 of LNCS, pages 320-335. Springer, 2005. [33] F. Spoto. Precise null-pointer analysis. Software and System Modeling, 10(2):219-252, 2011. 40 [34] F. Spoto and T. Jensen. Class analyses as abstract interpretations of trace semantics. ACM Trans. Program. Lang. Syst., 25(5):578-630, 2003. [35] F. Spoto, F. Mesnard, and E. Payet. A Termination Analyzer for Java Bytecode based on Path-Length. ACM Transactions on Programming Lan- guages and Systems, 32(3), 2010. [36] JOlden Suite. http://www- [37] R. Vallee-Rai, L. Hendren, V. Sundaresan, P. Lam, E. Gagnon, and P. Co. Soot - a Java Optimization Framework. In Proc. of CASCON'99, pages 125-135. IBM, 1999. [38] T. A. Wagner and S. L. Graham. Incremental analysis of real programming languages. In Proc. of PLDI'97, pages 31{43, 1997. [39] B. Wegbreit. Mechanical Program Analysis. Comm. of the ACM, 18(9),1975.