Abstract
Points-to analysis for Java infers heap objects that a reference variable can point to. Existing practiced context-sensitive points-to analyses are cloning-based, with an inherent limit to handle recursive procedure calls and being hard to scale under deep cloning. This paper presents a stacking-based context-sensitive points-to analysis for Java, by deriving the analysis as weighted pushdown model checking problems. To generate a tractable model for model checking, instead of passing global variables as parameters along procedure calls and returns, we model the heap memory with a global data structure that stores and loads global references with synchronized points-to information on-demand. To accelerate the analysis, we propose a two-staged iterative procedure that combines local exploration for lightening most of iterations and global update for guaranteeing soundness. In particular, summary transition rules that carry cached data flows are carefully introduced to trigger each local exploration, which boosts the convergence with retaining the precision. Empirical studies show that, our analysis scales well to Java benchmarks of significant size, and achieved in average 2.5X speedup in the two-staged analysis framework.
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
Andersen, L.: Program analysis and specialization for the c programming language. PhD thesis (1994)
Blackburn, S.M., Garner, R., Hoffman, C., et al.: The DaCapo benchmarks: Java benchmarking development and analysis. In: Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications, OOPSLA 2006, New York, NY, USA, pp. 169–190 (October 2006)
Lal, A., Reps, T.W.: Improving pushdown system model checking. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 343–357. Springer, Heidelberg (2006)
Lal, A., Reps, T.W.: Solving multiple dataflow queries using WPDSs. In: Alpuente, M., Vidal, G. (eds.) SAS 2008. LNCS, vol. 5079, pp. 93–109. Springer, Heidelberg (2008)
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)
Lhoták, O., Hendren, L.: Context-sensitive points-to analysis: is it worth it? In: Mycroft, A., Zeller, A. (eds.) CC 2006. LNCS, vol. 3923, pp. 47–64. Springer, Heidelberg (2006)
Li, X., Ogawa, M.: An ahead-of-time yet context-sensitive points-to analysis for Java. In: Proceedings of BYTECODE 2009, York, ENTCS17798. Elsevier, Amsterdam (March 2009)
Li, X., Ogawa, M.: Conditional weighted pushdown systems and applications. In: Proceedings of the 2010 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM 2010), pp. 141–150. ACM, New York (2010)
Milanova, A., Rountev, A., Ryder, B.G.: Parameterized object sensitivity for points-to analysis for java. ACM Trans. Softw. Eng. Methodol. 14(1), 1–41 (2005)
Reps, T.: Program analysis via graph reachability. In: Proceedings of the 1997 International Symposium on Logic Programming, ILPS 1997, pp. 5–19. MIT Press, Cambridge (1997)
Reps, T., Schwoon, S., Jha, S., Melski, D.: Weighted pushdown systems and their application to interprocedural dataflow analysis. Sci. Comput. Program. 58(1-2), 206–263 (2005)
Rountev, A., Milanova, A., Ryder, B.G.: Points-to analysis for Java using annotated constraints. SIGPLAN Not. 36(11), 43–55 (2001)
Sridharan, M., BodÃk, R.: Refinement-based context-sensitive points-to analysis for Java, vol. 41, pp. 387–400. ACM, New York (2006)
Sridharan, M., Gopan, D., Shan, L., BodÃk, R.: Demand-driven points-to analysis for java. SIGPLAN Not. 40(10), 59–76 (2005)
Vallée-Rai, R.: Ashes suite collection, http://www.sable.mcgill.ca/ashes
Vallée-Rai, R., Gagnon, E., Hendren, L.J., Lam, P., Pominville, P., Sundaresan, V.: Optimizing Java bytecode using the Soot framework: Is it feasible? In: Watt, D.A. (ed.) CC 2000. LNCS, vol. 1781, pp. 18–34. Springer, Heidelberg (2000)
Whaley, J., Lam, M.S.: Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In: ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2004), pp. 131–144 (2004)
Xu, G., Rountev, A.: Merging equivalent contexts for scalable heap-cloning-based context-sensitive points-to analysis. In: Proceedings of the 2008 International Symposium on Software Testing and Analysis, ISSTA 2008, pp. 225–236. ACM, New York (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Li, X., Ogawa, M. (2011). Stacking-Based Context-Sensitive Points-to Analysis for Java. In: Namjoshi, K., Zeller, A., Ziv, A. (eds) Hardware and Software: Verification and Testing. HVC 2009. Lecture Notes in Computer Science, vol 6405. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-19237-1_14
Download citation
DOI: https://doi.org/10.1007/978-3-642-19237-1_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-19236-4
Online ISBN: 978-3-642-19237-1
eBook Packages: Computer ScienceComputer Science (R0)