Abstract
Modeling of runtime threads in static analysis of concurrent programs plays an important role in both reducing the complexity and improving the precision of the analysis. Modeling based on type based techniques merges all runtime instances of a particular type and thereby introduces inaccuracy in the analysis. Other approaches model individual runtime threads explicitly in the analysis and are of high complexity. In this paper we introduce a thread model that is both context and flow sensitive. Individual thread abstractions are identified based on the context and multiplicity of the creation site. The interaction among these abstract threads are depicted in a tree structure known as Thread Creation Tree (TCT). The TCT structure is subsequently exploited to efficiently compute May-Happen-in-Parallel (MHP) information for the analysis of multi-threaded programs. For concurrent Java programs, our MHP computation algorithm runs 1.77x (on an average) faster than previously reported MHP computation algorithm.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aho, A.V., Sethi, R., Ullman, J.D.: Compilers Principles, Techniques, and Tools. Addison-Wesley publishing company, Reading (1986)
Alstrup, S., Lauridsen, P.W., Thorup, M.: Dominators in linear time. DIKU technical report (35) (1996)
Callahan, D., Subhlok, J.: Static analysis of low-level synchronization. In: Workshop on parallel and distributed debugging, pp. 100–111 (1989)
Choi, J.-D., Gupta, M., Serrano, M.J., Sreedhar, V.C., Midkiff, S.P.: Escape analysis for java. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), pp. 1–19 (1999)
Choi, J., Lee, K., Loginov, A., Callahan, R.O., Sarkar, V., Sridharan, M.: Efficient and precise datarace detection for multithreaded object-oriented programs. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 258–269 (2002)
Duesterwald, E., Soffa, M.L.: Concurrency analysis in the presence of procedures using a data-flow framework. In: Proceedings of the Symposium on Testing, Analysis, and Verification, pp. 36–48 (1991)
Gnu software, gcj - the gnu compiler for the java programming language, http://gcc.gnu.org/java
Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification. In: Sun Microsystems, 2nd edn. (2000)
Krinke, J.: Static slicing of threaded programs. In: Proceedings of the ACM SIGPLAN/ SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, June 1998, pp. 35–41 (1998)
Java grande forum, multi-threaded benchmark suite, http://www.epcc.ed.ac.uk/javagrande
Lamport, L.: How to make a correct multiprocess program execute correctly on a multiprocessor. IEEE Transactions on Computers 46(7), 779–782 (1997)
Lea, D.: Concurrent Programming in Java, 2nd edn. Addison-Wesley, Reading (2000)
Li, L., Verbrugge, C.: A practical mhp information analysis for concurrent java programs. In: Eigenmann, R., Li, Z., Midkiff, S.P. (eds.) LCPC 2004. LNCS, vol. 3602, pp. 194–208. Springer, Heidelberg (2005)
Masticola, S.P., Ryder, B.G.: Non-concurrency analysis. In: Proceedings of the Fourth Symposium on Principles and Practices of Parallel Programming, May 1993, pp. 129–138 (1993)
Naumovich, G., Avrunin, G.S., Clarke, L.A.: An efficient algorithm for computing mhp information for concurrent java programs. In: Nierstrasz, O., Lemoine, M. (eds.) ESEC 1999 and ESEC-FSE 1999. LNCS, vol. 1687, pp. 338–354. Springer, Heidelberg (1999)
Naumovich, G., Avrunin, G.S.: A conservative data flow algorithm for detecting all pairs of statements that happen in parallel. In: Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering, pp. 24–34 (1998)
von Praun, C., Gross, T.R.: Object race detection. In: Proceedings of Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2001), October 2001, pp. 70–82 (2001)
von Praun, C., Gross, T.R.: Static conflict analysis for multithreaded object-oriented programs. In: Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, pp. 115–128 (2003)
Rinard, M.: Analysis of multithreaded programs. In: Cousot, P. (ed.) SAS 2001. LNCS, vol. 2126, p. 1. Springer, Heidelberg (2001)
Ruf, E.: Effective synchronization removal for java. In: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation (PLDI 2000), pp. 208–218 (2000)
Sarkar, V.: Analysis and optimization of explicitly parallel programs using the parallel program graph representation. In: Huang, C.-H., Sadayappan, P., Sehr, D. (eds.) LCPC 1997. LNCS, vol. 1366. Springer, Heidelberg (1998)
Sarkar, V., Simons B.: Parallel program graphs and their classification. In: The Proceedings of ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering (1998)
Shasha, D., Snir, M.: Efficient and correct execution of parallel programs that share memory. ACM Transactions on Programming Languages and Systems 10(2), 282–312 (1988)
Spec jvm98 benchmarks, the standard performance evaluation corporation, http://www.spec.org/osg/jvm98
Sura, Z., Fang, X., Wong, C.-L., Midkiff, S.P., Lee, J., Padua, D.: Compiler techniques for high performance sequentially consistent java programs. In: PPoPP 2005: Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming, pp. 2–13. ACM Press, New York (2005)
Tarjan, R.: Depth-first search and linear graph algorithms. SIAM Journal on Computing 1(2), 146–160 (1972)
Taylor, R.N.: Complexity of analyzing the synchronization structure of concurrent programs. Acta Informatica 19, 57–84 (1983)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Barik, R. (2006). Efficient Computation of May-Happen-in-Parallel Information for Concurrent Java Programs. In: Ayguadé, E., Baumgartner, G., Ramanujam, J., Sadayappan, P. (eds) Languages and Compilers for Parallel Computing. LCPC 2005. Lecture Notes in Computer Science, vol 4339. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69330-7_11
Download citation
DOI: https://doi.org/10.1007/978-3-540-69330-7_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-69329-1
Online ISBN: 978-3-540-69330-7
eBook Packages: Computer ScienceComputer Science (R0)