CC 1992: Compiler Construction pp 73-87 | Cite as
Compiler implementation of ADTs using profile data
Abstract
There are many possible implementations of some very useful programming abstractions (sets, lists, and maps, to name a few), and selecting from among them is currently one of the early tasks in the design of a software system. While programming discipline and/or language features may allow the user to change implementations of an abstraction relatively easily, there remains the inherent problem of selecting a consistent and efficient set of implementations for a particular program. A small set of extensions to existing languages allows the specification of the necessary profile data within that of the implementation of the abstraction. The TypeSetter system selects a consistent and efficient set of implementations for a program's abstractions based on the collected profile data.
Keywords
Profile Data Default Representation Register Allocation Abstract Data Type Call SiteReferences
- Barstow, D. (November 1977): Automatic Construction of Algorithms and Data Structures using a Knowledge Base of Programming Rules. PhD Dissertation, Stanford UniversityGoogle Scholar
- Barstow, D. (January 1985): On Convergence Toward a Database of Program Transformations. ACM Transactions on Programming Languages and Systems 7, 1–9Google Scholar
- Dewar, R.B.K., Grand, A., Liu, S-C., Schwartz, J.T. (January 1979): Programming by Refinement, as Exemplified by the SETL Representation Sublanguage. ACM Transactions on Programming Languages and Systems 1, 27–49Google Scholar
- Ellis, M., Stroustrup, B. (1990): The Annotated C++ Reference Manual. Addison Wesley, Reading, MAGoogle Scholar
- Gilbreth, Jr., F.B., Carey, E.G. (1948): Cheaper by the Dozen. T.Y. Crowell, New YorkGoogle Scholar
- Hansen, G.J. (1974): Adaptive Systems for the Dynamic Run-time Optimization of Programs. PhD Dissertation, Carnegie-Mellon University, Pittsburgh, PAGoogle Scholar
- Kant, E. (1981): Efficiency Considerations in Program Synthesis. Stanford University, PhD DissertationGoogle Scholar
- Karr, M. (June 1984): Code Generation by Coagulation. Proceedings of the ACM-SIGPLAN 1984 Symposium on Compiler Construction, SIGPLAN Notices 19 Google Scholar
- Knuth, D.E. (1971): An Empirical Study of FORTRAN Programs. Software-Practice Experience 1, 105–133Google Scholar
- Knuth, D.E., Stevenson, F.R. (1973): Optimal measurement points for program frequency counts. BIT 13, 313–322Google Scholar
- Low, J.R. (August 1974): Automatic Coding: Choice of Data Structures. Computer Science Department, Stanford University, PhD Dissertation, Technical Report CS-452Google Scholar
- Low, J.R. (May 1978): Automatic Data Structure Selection: An Example and Overview. Communications of the ACM 21, 376–385Google Scholar
- Low, J.R., Rovner, P. (January 1976): Techniques for the Automatic Selection of Data Structures. Conference Record of the Third ACM Symposium on Principles of Programming LanguagesGoogle Scholar
- McFarling, S. (April 3–6, 1989): Program Optimization for Instruction Caches. Symposium on Architectural Support for Programming Languages and Operating Systems, Boston, MAGoogle Scholar
- Morris, W.G. (June 26–28, 1991): CCG: A Prototype Coagulating Code Generator. Proceedings of the ACM-SIGPLAN 1991 Conference on Programming Language Design and Implementation 26, 45–58Google Scholar
- Pettis, K., Hansen, R.C. (June 20–22, 1990): Profile Guided Code Positioning. Proceedings of the ACM-SIGPLAN 1990 Conference on Programming Language Design and Implementation 25, 16–27Google Scholar
- Ramirez, R.J. (March 1980): Efficient Algorithms for Selecting Efficient Data Storage Structures. Faculty of Mathematics, University of Waterloo, PhD Dissertation, Technical Report CS-80-18Google Scholar
- Rowe, L.A. (1976): A Formilization for Modelling Structures and the Generation of Efficient Implementation Structures. University of California, PhD DissertationGoogle Scholar
- Samples, A.D. (April 1991): Profile-driven compilation. Computer Science Division, EECS, University of California, Berkeley, Technical Report UCB/CSD 91/627Google Scholar
- Samples, A.D. (October 1988): Code Reorganization for Instruction Caches. Computer Science Division, EECS, University of California, Berkeley, Technical Report UCB/CSD 88/447Google Scholar
- Samples, A.D., Hilfinger, P. (October 1990): Profile-Driven Compilation. InfoCon '90, Tokyo, Japan. [The pages are out of order in the proceedings; the order should be: 169, 172,171,170,174,173,175,176.]Google Scholar
- Schwartz, J.T., Dewar, R.B.K., Dubinsky, E., Schonberg, E. (1986): Programming with Sets: An Introduction to SETL. Springer Verlag, BerlinGoogle Scholar
- Sherman, M.S. (1985): Paragon: A Language Using Type Hierarchies for the Specification, Implementation and Selection of Abstract Data Types. (Lecture Notes in Computer Science, vol. 189) Springer Verlag, BerlinGoogle Scholar
- Smith, D.R., Goldberg, A. (November 1986): Towards a Performance Estimation Assistant. Palo Alto, CA. KES.U.86.10Google Scholar
- Smith, D.R., Kotik, G.B., Westfold, S.J. (November 1985): Research on Knowledge-Based Software Environments at Kestrel Institute. IEEE Transactions on Software Engineering SE-11 Google Scholar
- Straub, R.M. (May 1988): Taliere: An Interactive System for Data Structuring SETL Programs. PhD Dissertation, Courant Institute of Mathematical Sciences, NYUGoogle Scholar
- Wall, D. (June 1986): Global Register Allocation at Link Time. Proceedings of the ACM-SIGPLAN 1986 Symposium on Compiler Construction, SIGPLAN Notices 21, 264–275Google Scholar
- Wall, D.W. (June 26–28, 1991): Predicting Program Behavior Using Real or Estimated Profiles. Proceedings of the ACM-SIGPLAN 1991 Conference on Programming Language Design and Implementation 26, 59–70Google Scholar
- Weiss, G. (March 1986): Recursive Data Types in SETL: Automatic Determination, Data Language Description, and Efficient Implementation. Courant Institute of Mathematical Sciences, NYU, Department of Computer Science, Technical Report 102Google Scholar