Abstract:
Program integration concerns the merging process that becomes necessary when a program's source code diverges into multiple variants. A program integration tool takes as input several variants of a base program and after determining the changes in each variant (with respect to the base program), incorporates these changes, along with the portion of base that is preserved in all the variants, into a merged program. In addition to assembling a merged program the integration tool also determines if two modification interfere (the notion of interference is formalized later). In the absence of interference the integration tool must provide guarantees about how the execution behavior of the merged program relates to the execution behaviors of the variants. This dissertation extends previous semantics-based integration tools by considering programs that include procedures and procedure calls. An example of the use of an integration tool is to provide a kind of optimistic concurrency control. In this scheme multiple programmers can update separate copies of a program in parallel without placing restrictions (i.e., locks) on the software modules they are modifying (such restrictions essentially constrain the activities of programmers and hence reduce their productivity). For example, consider a compiler being upgraded by two programmers: the first is specializing the code generator to produce code for a particular architecture and the second is implementing a new register allocation scheme. Knowing that they have a
Citations
|
908
|
Program slicing
– Weiser
- 1984
|
|
672
|
The program dependence graph and its use in optimization
– Ferrante, Ottenstein, et al.
- 1987
|
|
519
|
Interprocedural slicing using dependence graphs
– Horwitz, Reps, et al.
- 1990
|
|
383
|
Semantics of context-free languages
– Knuth
- 1968
|
|
234
|
The Program Dependence Graph in a Software Development
– Ottenstein, Ottenstein
|
|
218
|
Dependence graphs and compiler optimizations
– Kuck, Kuhn, et al.
- 1981
|
|
215
|
Intergrating Noninterfering Version of Programs
– Horwitz, Reps, et al.
- 1989
|
|
188
|
The Synthesizer Generator: A System for Constructing Language-Based Editors
– Reps, Teitelbaum
- 1988
|
|
129
|
Dependence analysis for pointer variables
– HORWITZ, PFEIFFER, et al.
|
|
120
|
An efficient way to find the side effects of procedure calls and the aliases of variables
– Banning
- 1979
|
|
110
|
A precise interprocedural data flow algorithm
– Myers
- 1981
|
|
104
|
Complexity of interprocedural side-effect analysis
– Cooper, Kennedy
- 1987
|
|
92
|
The program summary graph and flow-sensitive interprocedural data flow analysis
– Callahan
- 1988
|
|
76
|
The Denotational Description of Programming Languages
– Gordon
- 1979
|
|
76
|
Ordered Attribute Grammars
– Kastens
- 1980
|
|
74
|
On the Number of Operations Simultaneously Executable in Fortran-Like Programs and Their Resulting Speedup
– Kuck, Muraoka, et al.
- 1972
|
|
52
|
On the adequacy of program dependence graphs for representing programs
– HORWITZ, PRINS, et al.
- 1988
|
|
42
|
Program integration for languages with procedure calls
– BINKLEY, HORWITZ, et al.
- 1995
|
|
42
|
The semantics of program slicing
– REPS, YANG
- 1988
|
|
31
|
The semantics of program slicing and program integration
– REPS, YANG
|
|
27
|
Finding program slices for recursive procedures
– Hwang, Du, et al.
- 1988
|
|
22
|
Experiments on slicing-based debugging tools
– Lyle, Weiser
- 1986
|
|
18
|
Illustrating interference in interfering versions of programs
– Reps, Bricker
- 1989
|
|
15
|
Algebraic properties of program integration
– Reps
- 1991
|
|
14
|
The method of attributes for data flow analysis
– Babich, Jazayeri
- 1978
|
|
14
|
Minimizing communication for synchronizing parallel dataflow programs
– Badger, Weiser
- 1988
|
|
14
|
Reconstructing sequential behavior from parallel behavior projections
– Weiser
- 1983
|
|
12
|
On live-dead analysis for global data flow problems
– Kou
- 1977
|
|
8
|
Correctness of an algorithm for reconstituting a program from a dependence graph
– BALL, HORWITZ, et al.
- 1989
|
|
6
|
private communication
– Ball
- 1996
|
|
6
|
Dependence-based representations for programs with reference variables
– Pfeiffer
- 1991
|
|
5
|
private communication
– Bates
- 1988
|
|
4
|
The multi-procedure equivalence theorem
– Binkley, Horwitz, et al.
- 1989
|
|
4
|
A theory of program modifications
– Ramalingam, Reps
- 1990
|