Program |
 |
|
|
Find in Program |
 |
|
|
Page |
 |
|
|
Basket |
 |
|
view, help
"Efficient Implementation of Object-Oriented Programming Languages"
|
|
|
|
Efficient Implementation of Object-Oriented Programming Languages
Meeting Room 9 Thursday, 13:30, half day 7 | · | 8 | · | 9 | · | 10 | · | 11 | · | 12 | · | 13 | · | 14 | · | 15 | · | 16 | · | 17 | · | 18 | · | 19 | · | 20 | · | 21 |
Craig Chambers, University of Washington: Craig Chambers has been researching object-oriented language design and implementation since 1987, with publications in OOPSLA, ECOOP, ISOTAS, PLDI, POPL, PEPM, and TOPLAS on the topic. For his Ph.D. thesis at Stanford, he developed the first efficient implementation of the Self language, using optimizing dynamic compilation. Chambers is currently a Professor of Computer Science & Engineering at the University of Washington, where he designed the Cecil language and co-designed the MultiJava and ArchJava languages, heads the Vortex whole-program optimizing compiler project and the Whirlwind staged compiler project, and co-leads the DyC selective dynamic compilation project.
Tutorial number: 52
How are object-oriented languages implemented? What features of
object-oriented languages are expensive? What compiler optimizations
have been developed to make object-oriented languages more efficient?
This tutorial addresses these questions. After identifying the main
features of object-oriented languages that are challenging to
implement efficiently, three classes of implementation techniques are
presented. First, run-time system techniques such as virtual function
dispatch tables (including complications due to multiple inheritance
and virtual inheritance) and inline caches are described. Second,
static intra- and interprocedural analyses are discussed that seek to
identify at compile-time the possible classes of message receivers, in
order to reduce or eliminate the overhead of dynamic binding. Third,
ways in which dynamic execution profiles can be exploited to
complement static analysis techniques are described. To assess the
relative importance of the techniques, empirical measurements of the
effectiveness of many of these techniques, as implemented in the
Vortex optimizing compiler, are presented for large benchmarks written
in Java, C++, and Cecil.
Advanced: Attendees should be familiar with the features of object-oriented languages and also with traditional compiler techniques such as procedure inlining and data flow analysis.
|