Abstract
This paper presents the integration of Soot, a byte-code analysis and transformation framework, with an integrated development environment (IDE), Eclipse. Such an integrated toolkit is useful for both the compiler developer, to aid in understanding and debugging new analyses, and also for the end-user of the IDE, to aid in program understanding by exposing semantic information gathered by the advanced compiler analyses. The paper discusses these advantages and provides concrete examples of its usefulness. There are several major challenges to overcome in developing the integrated toolkit, and the paper discusses three major challenges and the solutions to those challenges. An overview of Soot and the integrated toolkit is given, followed by a more detailed discussion of the fundamental components. The paper concludes with several illustrative examples of using the integrated toolkit along with a discussion of future plans and research.
This work is funded, in part, by an IBM-sponsored Eclipse Innovation Grant, and by NSERC.
Chapter PDF
References
AspectJ, http://eclipse.org/aspectj/
Bacon, D.F., Sweeney, P.F.: Fast static analysis of C++ virtual function calls. In: OOPSLA 1996 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications, pp. 324–341. ACM Press, New York (1996)
Balaban, I., Tip, F., Dolby, J.: Using static analysis for program understanding in an integrated development environment (2002), http://oopsla.acm.org/fp/files/dem-1.html
Binkley, D., Duncan, B., Jubb, B., Wielgosz, A.: The feedback compiler. In: IEEE Sixth International Workshop on Program Comprehension, June 1998, pp. 198–205 (1998)
Binkley, D., Gallagher, K.: Program slicing. Advances in Computers 43, 1–50 (1996)
Bodden, E.: A High-level View of Java Applications. In: OOPSLA 2003 ACM Conference on Object-Oriented Systems, Languages and Applications (Companion), SIGPLAN, Anaheim, CA (October 2003)
Boyd, M.: Graphical visualization of compiler optimizations. Master’s thesis, Florida State University (July 1993)
Chang, B.-M., Jo, J.-W., Her, S.H.: Visualization of exception propagation for Java using static analysis. In: Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2002), p. 173. IEEE Computer Society, Los Alamitos (2002)
Dean, J., Grove, D., Chambers, C.: Optimization of object-oriented programs using static class hierarchy analysis. In: Olthoff, W. (ed.) ECOOP 1995. LNCS, vol. 952, pp. 77–101. Springer, Heidelberg (1995)
Diehl, S., Stasko, J.T. (eds.): Proceedings of the 2003 ACM Symposium on Software Visualization. ACM Press, New York (2003)
Fraser, C.W., Hanson, D.R.: A Retargetable C Compiler: Design and Implementation. Addison-Wesley Longman Publishing Co., Inc., Amsterdam (1995)
Harvey, B.K.: Graphical user interface for compiler optimizations with Simple-SUIF. Master’s thesis, University of California, Riverside (December 1996)
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)
Lindholm, T., Yellin, F.: The Java Virtual Machine Specification. Addison-Wesley, Reading (1996)
Müller, H.A., Koschke, R., Wong, K. (eds.): 11th International Workshop on Program Comprehension (IWPC 2003). IEEE Computer Society, Los Alamitos (2003)
Nystrom, N., Clarkson, M.R., Myers, A.C.: Polyglot: An extensible compiler framework for Java. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 138–152. Springer, Heidelberg (2003)
Pominville, P., Qian, F., Vallée-Rai, R., Hendren, L., Verbrugge, C.: A framework for optimizing Java using attributes. In: Wilhelm, R. (ed.) CC 2001. LNCS, vol. 2027, pp. 334–554. Springer, Heidelberg (2001)
Qian, F., Hendren, L., Verbrugge, C.: A comprehensive approach to array bounds check elimination for Java. In: Horspool, R.N. (ed.) CC 2002. LNCS, vol. 2304, pp. 325–341. Springer, Heidelberg (2002)
SableCC, http://www.sable.mcgill.ca/sablecc/
SPEC JVM98 Benchmarks, http://www.spec.org/osg/jvm98/
Sundaresan, V., Hendren, L., Razafimahefa, C., Vallée-Rai, R., Lam, P., Gagnon, E., Godin, C.: Practical virtual method call resolution for Java. In: Proceedings of OOPSLA 2000, pp. 264–280 (2000)
Tip, F.: A survey of program slicing techniques. Journal of programming languages 3, 121–189 (1995)
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)
Vegdahl, S.R.: Using visualization tools to teach compiler design. The Journal of Computing in Small Colleges 16(2), 72–83 (2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lhoták, J., Lhoták, O., Hendren, L. (2004). Integrating the Soot Compiler Infrastructure into an IDE. In: Duesterwald, E. (eds) Compiler Construction. CC 2004. Lecture Notes in Computer Science, vol 2985. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24723-4_19
Download citation
DOI: https://doi.org/10.1007/978-3-540-24723-4_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-21297-3
Online ISBN: 978-3-540-24723-4
eBook Packages: Springer Book Archive