|
ABSTRACT
One trend among programmers is the increased use of abstractions. Through encapsulation techniques, abstractions extend the repertory of data structures and their concomitant operations that are processed directly by a compiler. For example, a compiler might not offer sets or set operations in its base language, but abstractions allow a programmer to define sets in terms of constructs already recognized by the compiler. In particular, abstractions can allow new constructs to be defined in terms of other abstractions. Although significant power is gained through the use of layered abstractions, object code quality suffers as increasingly less of a program's data structures and operations are exposed to the optimization phase of a compiler. Multiple references to abstractions are also inefficient, since the interaction between abstractions is often complex yet hidden from a compiler. Abstractions are most flexible when they are cast in general terms; a specific invocation is then tailored by the abstraction to obtain the appropriate code. A sequence of references to such abstractions can be inefficient due to functional redundancy that cannot be detected at compile-time. By integrating the references, the offending segments of code can be moved to a more advantageous position. Although procedure integration materializes abstracted constructs, the abstractions can still be ineligible for optimization using current techniques; in particular, abstractions often involve loops and conditional branches that can obscure code that would otherwise be eligible for code motion.
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.
 |
1
|
|
| |
2
|
|
| |
3
|
{Banerjee79} Banerjee, U., Speedup of Ordinary Programs. Published by University of Illinois at Urbana-Champaign, Oct. 1979, DCS Report No. UIUCDCS-R-79--989.
|
| |
4
|
{Burke84} Burke, M., An interval approach toward interprocedural analysis. Published by IBM, July, 1984, RC 10640 #47724.
|
| |
5
|
{Chaitin81} Chaitin, G. J., Auslander, M. A., Chandra, A. K., Cocke, J., Hopkins, M. E., Markstein, P. W., Register allocation via coloring. <i>Computer Languages,</i> 1981, vol. 6, page 47--57.
|
 |
6
|
|
| |
7
|
|
 |
8
|
|
| |
9
|
|
 |
10
|
|
 |
11
|
|
 |
12
|
|
 |
13
|
|
 |
14
|
|
 |
15
|
|
| |
16
|
{Reif81} Reif, J. H., Tarjan, R. E., Symbolic program analysis in almost linear time. <i>SIAM Journal of Computing,</i> Feb. 1981, vol. 11, no. 1, page 81--93.
|
| |
17
|
{Reif82} Reif, J. H., Lewis, H. R., Efficent symbolic analysis of programs. Published by Harvard University, Aiken Computation Laboratory, 1982, no. TR-37--82.
|
| |
18
|
{Schwartz73} Schwartz, J. T., On Programming, An Interim Report on the SETL Project, Installment II: The SETL Language and Examples of Its Use. Published by Computer Science Department, Courant Institute of Mathematical Sciences. New York University, Oct. 1973.
|
| |
19
|
{Schwartz79} Schwartz, J. T., Sharir, M., A design for optimizations of the bitvectoring class. Published by Courant Institute of Mathematical Sciences. Computer Science Department, New York University., Sept. 1979, no. 17.
|
| |
20
|
{Tarjan74} Tarjan, R. E., Testing flow graph reducibility. <i>Journal of Computer and Systems Sciences</i>, Dec. 1974, vol. 9, page 355--365.
|
 |
21
|
|
| |
22
|
{Wolfe82} Wolfe, M. J., Optimizing Supercompilers for Supercomputers. Published by Computer Science Department, University of Illinois at Urbana-Champaign, 1982.
|
CITED BY 23
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Daniel Weise , Roger F. Crew , Michael Ernst , Bjarne Steensgaard, Value dependence graphs: representation without taxation, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.297-310, January 16-19, 1994, Portland, Oregon, United States
|
|
|
|
|
|
|
|
|
B. K. Rosen , M. N. Wegman , F. K. Zadeck, Global value numbers and redundant computations, Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.12-27, January 10-13, 1988, San Diego, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|