Compiler Implementation of ADTs Using Profile Data

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.

[1]  Edmond Schonberg,et al.  Taliere: an interactive system for data structuring setl programs , 1988 .

[2]  K. Gosmann,et al.  Code reorganization for instruction caches , 1993, [1993] Proceedings of the Twenty-sixth Hawaii International Conference on System Sciences.

[3]  Gilbert Joseph Hansen,et al.  Adaptive systems for the dynamic run-time optimization of programs. , 1974 .

[4]  James R. Low Automatic data structure selection: an example and overview , 1978, CACM.

[5]  Mark Sherman Paragon: A Language Using Type Hierarchies for the Specification, Implementation and Selection of Abstract Data Types , 1985, Lecture Notes in Computer Science.

[6]  David R. Barstow,et al.  On convergence toward a database of program transformations , 1985, TOPL.

[7]  Donald E. Knuth,et al.  Optimal measurement points for program frequency counts , 1973 .

[8]  James R. Low,et al.  Chess , 1975, SGAR.

[9]  David Robbins Barstow,et al.  Automatic construction of algorithms and data structures using a knowledge base of programming rules , 1977 .

[10]  Paul Rovner,et al.  Techniques for the automatic selection of data structures , 1976, POPL.

[11]  Douglas R. Smith,et al.  Research on Knowledge-Based Software Environments at Kestrel Institute , 1985, IEEE Transactions on Software Engineering.

[12]  Edmond Schonberg,et al.  Programming by Refinement, as Exemplified by the SETL Representation Sublanguage , 1979, TOPL.

[13]  Paul N. Hilfinger,et al.  Code Reorginazation for Instruction Caches , 1988 .

[14]  Alan Dain Samples,et al.  Profile-Driven Compilation , 1991 .

[15]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[16]  Donald E. Knuth,et al.  An empirical study of FORTRAN programs , 1971, Softw. Pract. Exp..

[17]  Edmond Schonberg,et al.  Programming with Sets: An Introduction to SETL , 1986 .

[18]  S. McFarling Program optimization for instruction caches , 1989, ASPLOS 1989.

[19]  David W. Wall Predicting program behavior using real or estimated profiles , 1991, PLDI '91.

[20]  Edith Schonberg,et al.  Programming with Sets , 1986, Texts and Monographs in Computer Science.

[21]  Michael Karr Code generation by coagulation , 1984, SIGPLAN '84.

[22]  W. G. Morris,et al.  CCG: a prototype coagulating code generator , 1991, PLDI '91.