9624458 Hoelzle Programmers have long been faced with the dilemma of choosing between abstraction and efficiency: if they use abstraction pervasively, their programs become more maintainable but may execute too slowly. Ideally, hiding a design decision behind an abstract interface should have no impact on performance, so that programmers can reap the full benefits of encapsulation without fear of performance problems. Thus, abstraction-oriented languages must employ aggressive compiler optimizations to reduce the run-time overhead of abstraction. Since the ultimate goal is to increase programmer productivity, these optimizations must be compatible with interactive, exploratory programming environments. The focus of this work is on reducing the cost of abstraction in object-oriented languages, as well as, complementary educational goals. The objective of this project is to develop adaptive customization, a compiler technique that aims to make aggressive optimization practical by improving performance without unduly increasing code size. Being suitable for interactive programming environments, adaptive customization could dramatically improve the performance of real-world applications written in dynamic languages like Smalltalk, Self, Java, Dylan, or CLOS. Not all dispatches can be optimized away, and the remaining dispatches may become more expensive on superscalar processors. Thus, the goal is to develop new dispatch techniques specifically optimized for such processors. A comprehensive study of dispatch performance on superscalar processors will be undertaken in this project. Benchmark suites and tools will be developed to support this research. ***