|
ABSTRACT
Automated assistance for meaning-preserving global restructuring is an approach for helping software engineers improve the structure of programs, thus lowering the costs of maintenance. The consturction of a restructuing tool encounters many conflicting goals---such as simplicity. extensibility, and good performance---that cannot be met without some compromise. In particular, the current technique for assisting restructuring uses a costly program representation---a Program Dependence Graph (PDG) with alias information---that is not practical to recompute from scratch after each restructuring transformation. There are at least two possible solutions. A commonly suggested approach for efficiently updating data flow representations is to use a generic incremental algorithm that does not make use of the special nature of the restructuring. This approach is general, but it does not yet handle aliasing fully. By taking advantage of the special nature of the restructuring transformations it is possible to implement a more efficient update than generic update that also handles aliasing. The idea is to implement direct updates to the PDG that are analogous to the changes on the program text. The downsides to direct update are that it is application-specific, applies only to semantically restricted applications like restructuring, and may be more complex. The choice between the two techniques requires an understanding of the current and future needs of the tool's users.This paper describes the direct approach of updating the PDG and related representations for restructuring, provides techniques for managing its complexity, critiques its advantages and shortcomings relative to generic incremental update, and presents performance results.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
Aho et al. 86
|
Alfred V. Aho , Ravi Sethi , Jeffrey D. Ullman, Compilers: principles, techniques, and tools, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1986
|
| |
Allen & Cocke 72
|
F. E. Alten and J. Cocke. A catalogue of optimizing transformations. In R. Rustin, editor, Design and Optimization of Compilers. Prentice-Hall, Englewood Cliffs, NJ, 1972.
|
 |
Allen 70
|
|
| |
Belady & Lehman 71
|
|
| |
Belady & Lehman 76
|
|
| |
Burke & Ryder 90
|
|
 |
Burke 90
|
|
 |
Cartwright & Felleisen 89
|
|
 |
Chase et al. 90
|
|
 |
Choi et al. 91
|
Jong-Deok Choi , Ron Cytron , Jeanne Ferrante, Automatic construction of sparse data flow evaluation graphs, Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.55-66, January 21-23, 1991, Orlando, Florida, United States
[doi> 10.1145/99583.99594]
|
 |
Cytron et al. 88
|
R. Cytron , J. Ferrante , B. K. Rosen , M. N. Wegman , F. K. Zadeck, An efficient method of computing static single assignment form, Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.25-35, January 11-13, 1989, Austin, Texas, United States
[doi> 10.1145/75277.75280]
|
 |
Ferrante et al. 87
|
|
| |
Griswold & Bowdidge 93
|
|
 |
Griswold & Notkin 93
|
|
| |
Griswold 91
|
W. G. Griswold. Program Restructuring to Aid Software Maintenance. PhD dissertation, University of Washington, Dept. of Computer Science& Engineering, August 1991. Technical Report No. 91-08-04.
|
 |
Hoare et al. 87
|
C. A. R. Hoare , I. J. Hayes , He Jifeng , C. C. Morgan , A. W. Roscoe , J. W. Sanders , I. H. Sorensen , J. M. Spivey , B. A. Sufrin, Laws of programming, Communications of the ACM, v.30 n.8, p.672-686, Aug. 1987
[doi> 10.1145/27651.27653]
|
 |
Kuck et al. 81
|
D. J. Kuck , R. H. Kuhn , D. A. Padua , B. Leasure , M. Wolfe, Dependence graphs and compiler optimizations, Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.207-218, January 26-28, 1981, Williamsburg, Virginia
[doi> 10.1145/567532.567555]
|
 |
Landi & Ryder 92
|
|
 |
Landi et al. 93
|
|
 |
Larus & Hilfinger 88
|
|
| |
Larus 89
|
|
| |
Lientz & Swanson 80
|
|
 |
Lippe 92
|
|
 |
Marlowe & Ryder 90
|
|
| |
Marlowe & Ryder 91
|
T. J. Marlowe and B. G. Ryder. Hybrid incremental alias algorithms. In Hawaii International Conference on Systems Sojiware, January 1991.
|
 |
Parnas 72
|
|
| |
Parsons 92
|
|
| |
Podgurski & Clarke 90
|
|
| |
Pollock & Soffa 89
|
|
| |
Ramalingam & Reps 89
|
G. Ramalingam and T. Reps. Semantics of program representation graphs. Technical Report 900, Computer Sciences Departrnent University of Wisconsirr, Madison WI, December 1989.
|
| |
Reps & Teitelbaum 87
|
|
 |
Rowe et al. 91
|
Lawrence A. Rowe , Joseph A. Konstan , Brian C. Smith , Steve Seitz , Chung Liu, The PICASSO applications framework, Proceedings of the 4th annual ACM symposium on User interface software and technology, p.95-105, November 11-13, 1991, Hilton Head, South Carolina, United States
[doi> 10.1145/120782.120793]
|
| |
Ryder et al. 88
|
|
| |
Ryder et al. 90
|
|
| |
Selke 90
|
R. P. Selke. Transforming program dependence graphs. Technical Report TR90-131, Department of Computer Science, Rice University, Houston, Texas, 1990.
|
 |
Shivers 88
|
|
| |
Shivers 91
|
|
| |
Steele 91
|
|
 |
Venkatesh 91
|
|
| |
Yang 90
|
|
| |
Yang et at. 89
|
W. Yang, S. Horwitz, and T. Reps. Detecting program components with equivalent behaviors. Technical Report 840, Computer Sciences Department University of Wisconsin, Madison WI, April 1989.
|
|