Purpose: A fundamental benefit of modern programming
languages like Java is the power of abstraction: programmers are able to abstract away
from low-level, system-specific implementation details and construct reusable, modular and
secure systems. Unfortunately, abstraction makes the efficient implementation of these
langauge hard. In particular, the compiler has to work harder to obtain informations
hidden awway in abstractions. For example, java's garbage collection raises serious
performance-related questions for distributed applications; it raises even more serious
problems in real-time settings. A second challenge is that of the compilation of
incomplete code fragments, on particular link-time optimizations.
Approach:
We will address both of these challenge using a
notion of control-flow types that encodes within it the flow information at every program
point, maintains the accuracy of the information through every stage of the compiler and
specializes data representation to every context. Products of this research will include a
compiler workbench that can be tuned with varying degrees of flow information, and a new
framework that supports compilation of incomplete code fragments. The upshot of the
workbench and framework will be improved performance of applications written in Java and
similar languages.
Status:
Related
Publications:
|