Learn More
While fine-grained concurrent languages can naturally capture concurrency in many irregular and dynamic problems, their flexibility has generally resulted in poor execution effciency. In such languages the computation consists of many small threads which are created dynamically and synchronized implicitly. In order to minimize the overhead of these(More)
ICC++ is a new concurrent C++ dialect which supports a single source code for sequential and parallel program versions, the construction of concurrent data abstractions, convenient expression of irregular and ne-grained concurrency, and high performance implementations. ICC++ programs are annotated with potential concurrency, facilitating both sharing(More)
The introduction of concurrency complicates the already diicult task of large-scale programming. Concurrent object-oriented languages provide a mechanism, encapsulation, for managing the increased complexity of large-scale concurrent programs, thereby reducing the diiculty of large scale concurrent programming. In particular, ne-grained object-oriented(More)
Concrete type information is invaluable for program optimization. The determination of concrete types in object-oriented languages is a flow sensitive global data flow problem. It is made difficult by dynamic dispatch (virtual function invocation) and first class functions (and selectors)—the very program structures for whose optimization its results(More)
Programs written in high-level programming languages and in particular object-oriented languages make heavy use of references and dynamically allocated structures. As a result, precise analysis of such features is critical for producing eecient implementations. The information produced by this analysis is invaluable for compiling programs for both(More)
Concurrent object-oriented programming (COOP) languages focus the abstraction and encapsulation power of abstract data types on the problem of concurrency control. In particular, pure fine-grained concurrent object-oriented languages (as opposed to hybrid or data parallel) provides the programmer with a simple, uniform, and flexible model while exposing(More)
High performance on distributed memory machines for programming models with dynamic thread creation and multithreading requires eecient thread management and communication. Traditional mul-tithreading runtimes, consisting of few general-purpose, bundled mechanisms that assume minimal compiler and hardware support, are suitable for computations involving(More)