Abstract
This paper presents an application of partial evaluation (program specialization) techniques to concurrent programs. The language chosen for this investigation is a very simple CSP-like language. A standard binding-time analysis for imperative languages is extended in order to deal with the basic concurrent constructs (synchronous communication and nondeterministic choice). Based on the binding-time annotations, a specialization transformation is defined and proved correct. In order to maintain a simple and clear presentation, the specialization algorithm addresses only the data transfer component of the communication; partial evaluation, the way it is defined here, always generates residual synchronizations. However, a simple approximate analysis for detecting and removing redundant synchronizations from the residual program (i.e. synchronizations whose removal does not increase the nondeterminism of a program) can be performed. The paper also addresses pragmatic concerns such as improving the binding-time analysis, controlling loop unrolling and the consequences of lifting nondeterminism from run-time to specialization-time. Finally, the power of the newly developed technique is shown in several examples.
Original language | English (US) |
---|---|
Pages (from-to) | 47-60 |
Number of pages | 14 |
Journal | SIGPLAN Notices (ACM Special Interest Group on Programming Languages) |
Volume | 32 |
Issue number | 12 |
DOIs | |
State | Published - Dec 1997 |
Keywords
- Binding-time analysis
- CSP
- Concurrency
- Nondeterminism
- Partial evaluation
ASJC Scopus subject areas
- Software
- Computer Graphics and Computer-Aided Design