In this dissertation, we show how a relatively simple and extremely fast interprocedural optimization algorithm can be used to optimize many of the expensive features of statically typed, object-oriented languages--in particular, C++ and Java.
We present a new program analysis algorithm, Rapid Type Analysis, and show that it is fast both in theory and in practice, and significantly out-performs other "fast" algorithms for virtual function call resolution.
We present optimization algorithms for the resolution of virtual function calls, conversion of virtual inheritance to direct inheritance, elimination of dynamic casts and dynamic type checks, and removal of object synchronization. These algorithms are all presented within a common framework that allows them to be driven by the information collected by Rapid Type Analysis, or by some other type analysis algorithm.
Collectively, the optimizations in this dissertation free the programmer from having to sacrifice modularity and extensibility for performance. Instead, the programmer can freely make use of the most powerful features of object-oriented programming, since the optimizer will remove unnecessary extensibility from the program.
Cited By
- Ali K, Rapoport M, Lhoták O, Dolby J and Tip F Constructing Call Graphs of Scala Programs Proceedings of the 28th European Conference on ECOOP 2014 --- Object-Oriented Programming - Volume 8586, (54-79)
- Sallenave O and Ducournau R Lightweight generics in embedded systems through static analysis Proceedings of the 13th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, Tools and Theory for Embedded Systems, (11-20)
- Sallenave O and Ducournau R (2012). Lightweight generics in embedded systems through static analysis, ACM SIGPLAN Notices, 47:5, (11-20), Online publication date: 18-May-2012.
- Allende E and Fabry J Application optimization when using gradual typing Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems, (1-6)
- Kumar R and Chakraborty S (2007). Precise static type analysis for object oriented programs, ACM SIGPLAN Notices, 42:2, (17-26), Online publication date: 1-Feb-2007.
- Rayside D, Mendel L and Jackson D A dynamic analysis for revealing object ownership and sharing Proceedings of the 2006 international workshop on Dynamic systems analysis, (57-64)
- Glew N, Palsberg J and Grothoff C Type-safe optimisation of plugin architectures Proceedings of the 12th international conference on Static Analysis, (135-154)
- Livshits B, Whaley J and Lam M Reflection analysis for java Proceedings of the Third Asian conference on Programming Languages and Systems, (139-160)
- Blanchet B (2003). Escape analysis for JavaTM, ACM Transactions on Programming Languages and Systems (TOPLAS), 25:6, (713-775), Online publication date: 1-Nov-2003.
- Kawachiya K, Koseki A and Onodera T Lock reservation Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (130-141)
- Koved L, Pistoia M and Kershenbaum A Access rights analysis for Java Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (359-372)
- Mikheev V, Lipsky N, Gurchenkov D, Pavlov P, Sukharev V, Markov A, Kuksenko S, Fedoseev S, Leskov D and Yeryomin A Overview of excelsior JET, a high performance alternative to java virtual machines Proceedings of the 3rd international workshop on Software and performance, (104-113)
- Koved L, Pistoia M and Kershenbaum A (2019). Access rights analysis for Java, ACM SIGPLAN Notices, 37:11, (359-372), Online publication date: 17-Nov-2002.
- Kawachiya K, Koseki A and Onodera T (2019). Lock reservation, ACM SIGPLAN Notices, 37:11, (130-141), Online publication date: 17-Nov-2002.
- Palsberg J Type-based analysis and applications Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, (20-27)
- Ryder B and Tip F Change impact analysis for object-oriented programs Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, (46-53)
- Rayside D and Kontogiannis K On the syllogistic structure of object-oriented programming Proceedings of the 23rd International Conference on Software Engineering, (113-122)
- Rayside D, Litoiu M, Storey M and Best C Integrating SHriMP with the IBM websphere studio workbench Proceedings of the 2001 conference of the Centre for Advanced Studies on Collaborative research
- Knoblock T and Rehof J (2001). Type elaboration and subtype completion for Java bytecode, ACM Transactions on Programming Languages and Systems (TOPLAS), 23:2, (243-272), Online publication date: 1-Mar-2001.
- Knoblock T and Rehof J Type elaboration and subtype completion for Java bytecode Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (228-242)
- Tip F and Palsberg J Scalable propagation-based call graph construction algorithms Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (281-293)
- Ishizaki K, Kawahito M, Yasue T, Komatsu H and Nakatani T A study of devirtualization techniques for a Java Just-In-Time compiler Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (294-310)
- Rayside D and Campbell G An Aristotelian understanding of object-oriented programming Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (337-353)
- Tip F and Palsberg J (2019). Scalable propagation-based call graph construction algorithms, ACM SIGPLAN Notices, 35:10, (281-293), Online publication date: 1-Oct-2000.
- Ishizaki K, Kawahito M, Yasue T, Komatsu H and Nakatani T (2019). A study of devirtualization techniques for a Java Just-In-Time compiler, ACM SIGPLAN Notices, 35:10, (294-310), Online publication date: 1-Oct-2000.
- Rayside D and Campbell G (2019). An Aristotelian understanding of object-oriented programming, ACM SIGPLAN Notices, 35:10, (337-353), Online publication date: 1-Oct-2000.
- Ishizaki K, Kawahito M, Yasue T, Takeuchi M, Ogasawara T, Suganuma T, Onodera T, Komatsu H and Nakatani T Design, implementation, and evaluation of optimizations in a just-in-time compiler Proceedings of the ACM 1999 conference on Java Grande, (119-128)
- Bogda J and Hölzle U Removing unnecessary synchronization in Java Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (35-46)
- Sweeney P and Gil J Space and time-efficient memory layout for multiple inheritance Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (256-275)
- Tip F, Laffra C, Sweeney P and Streeter D Practical experience with an application extractor for Java Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (292-305)
- Bogda J and Hölzle U (2019). Removing unnecessary synchronization in Java, ACM SIGPLAN Notices, 34:10, (35-46), Online publication date: 1-Oct-1999.
- Sweeney P and Gil J (2019). Space and time-efficient memory layout for multiple inheritance, ACM SIGPLAN Notices, 34:10, (256-275), Online publication date: 1-Oct-1999.
- Tip F, Laffra C, Sweeney P and Streeter D (2019). Practical experience with an application extractor for Java, ACM SIGPLAN Notices, 34:10, (292-305), Online publication date: 1-Oct-1999.
- Sweeney P and Tip F A study of dead data members in C++ applications Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, (324-332)
- Sweeney P and Tip F (1998). A study of dead data members in C++ applications, ACM SIGPLAN Notices, 33:5, (324-332), Online publication date: 1-May-1998.
Recommendations
Implementing statically typed object-oriented programming languages
Object-oriented programming represents an original implementation issue due to its philosophy of making the program behavior depend on the dynamic type of objects. This is expressed by the late binding mechanism, aka message sending. The underlying ...
Object-oriented encapsulation for dynamically typed languages
OOPSLA '04: Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsEncapsulation in object-oriented languages has traditionally been based on static type systems. As a consequence, dynamically-typed languages have only limited support for encapsulation. This is surprising, considering that encapsulation is one of the ...