Advertisement

Definite Expression Aliasing Analysis for Java Bytecode

  • Đurica Nikolić
  • Fausto Spoto
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7521)

Abstract

We define a novel static analysis for Java bytecode, called definite expression aliasing. It infers, for each variable v at each program point p, a set of expressions whose value at p is equal to the value of v at p, for every possible execution of the program. Namely, it determines which expressions must be aliased to local variables and stack elements of the Java Virtual Machine. This is a useful piece of information for a static analyzer, such as Julia, since it can be used to refine other analyses at conditional statements or assignments. We formalize and implement a constraint-based analysis, defined and proved correct in the abstract interpretation framework. Moreover, we show the benefits of our definite expression aliasing analysis for nullness and termination analysis with Julia.

Keywords

Exception Handler Abstract Domain Java Virtual Machine Alias Analysis Concrete Semantic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Soot: A Java Optimization Framework, http://www.sable.mcgill.ca/soot/
  2. 2.
    WALA: T.J. Watson Libraries for Analysis, http://wala.sourceforge.net/
  3. 3.
    Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques and Tools. Addison-Wesley (1986)Google Scholar
  4. 4.
    Albert, E., Arenas, P., Genaim, S., Puebla, G., Ramírez Deantes, D.V.: From Object Fields to Local Variables: A Practical Approach to Field-Sensitive Analysis. In: Cousot, R., Martel, M. (eds.) SAS 2010. LNCS, vol. 6337, pp. 100–116. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  5. 5.
    Cousot, P., Cousot, R.: Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In: Proc. of the 4th Symp. on Principles of Programming Languages (POPL), pp. 238–252. ACM (1977)Google Scholar
  6. 6.
    Fink, S., Yahav, E., Dor, N., Ramalingam, G., Geay, E.: Effective Typestate Verification in the Presence of Aliasing. In: Proc. of the International Symposium on Software Testing and Analysis (ISSTA), pp. 133–144. ACM (2006)Google Scholar
  7. 7.
    Hind, M.: Pointer Analysis: Haven’t We Solved This Problem Yet? In: Proc. of the Workshop on Prog. Analysis for Software Tools and Engineering (PASTE), pp. 54–61. ACM (2001)Google Scholar
  8. 8.
    Lindholm, T., Yellin, F.: The JavaTM Virtual Machine Specification, 2nd edn. Addison-Wesley (1999)Google Scholar
  9. 9.
    Logozzo, F., Fähndrich, M.: On the Relative Completeness of Bytecode Analysis Versus Source Code Analysis. In: Hendren, L. (ed.) CC 2008. LNCS, vol. 4959, pp. 197–212. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  10. 10.
    Nikolić, Đ., Spoto, F.: Definite Expression Aliasing Analysis for Java Bytecode, http://profs.sci.univr.it/~nikolic/download/ICTAC2012/ICTAC2012Ext.pdf
  11. 11.
    Nikolić, Đ., Spoto, F.: Reachability Analysis of Program Variables. In: Gramlich, B., Miller, D., Sattler, U. (eds.) IJCAR 2012. LNCS (LNAI), vol. 7364, pp. 423–438. Springer, Heidelberg (2012)Google Scholar
  12. 12.
    Ohata, F., Inoue, K.: JAAT: Java Alias Analysis Tool for Program Maintenance Activities. In: Proc. of the 9th International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC), pp. 232–244. IEEE (2006)Google Scholar
  13. 13.
    Spoto, F.: Precise Null-pointer Analysis. Software and Syst. Modeling 10(2), 219–252 (2011)CrossRefGoogle Scholar
  14. 14.
    Spoto, F., Ernst, M.D.: Inference of Field Initialization. In: Proc. of the 33rd International Conference on Software Engineering (ICSE), pp. 231–240. ACM (2011)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Đurica Nikolić
    • 1
    • 2
  • Fausto Spoto
    • 1
  1. 1.Dipartimento di InformaticaUniversity of VeronaItaly
  2. 2.The Microsoft ResearchUniversity of Trento Center for Computational and Systems BiologyItaly

Personalised recommendations