Method and apparatus for improving compiler performance during subsequent compilations of a source program
Patent 6078744 Issued on June 20, 2000. Estimated Expiration Date: August 1, 2017. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.
717/153, Dynamic (i.e., machine or object level)700/28, Optimization or adaptive control717/116, Object oriented717/145, Including recompilation717/146, Including intermediate code717/159Code restructuring
Apparatus, methods, and computer program products are disclosed for improving the performance of subsequent compilations of a source program. The initial compilation of the source program journals computationally expensive intermediate compilation data. Subsequent compilations, instead of recomputing this data, uses the intermediate compilation data from the journal. Thus the compiler has improved performance during subsequent compilations of the source program. One aspect of the invention applies to dynamic compilers to reduce the startup delay caused by compiling the source program when the program is invoked.
Other References
Aho, A.V., et al., "Introduction to Compiling," (Chapter 1) and "Code Generation," (Chapter 9) in Compilers: Principles, Techniques, and Tools, Addison-Wesley Publishing Co., Reading, MA (1988)
Booch, G., "Elements of the Object Model," in Object Oriented Design (with Applications), The Benjamin/Cummings Publishing Co., Inc., Redwood City, CA (1991)
Dean, J., and Chambers, C., "Towards Better Inlining Decisions Using Inlining Trials," 1994 ACM Conference on LISP and Functional Programming, Orlando, FL (Jun. 1994)
Holzle, U., "Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming," a dissertation submitted to the Stanford University Dept. of Computer Science in partial fulfillment of the requirements for the degree of Doctor of Philosophy (1995)
Subhlok et al., "Optimal latency throughput tradeoffs for data parallel pipelines", SPAA, ACM, pp. 62-71, Jun. 1996
Lain et al., "Compler support for hybrid irregular accesses on multicomputers", ICS ACM, pp. 1-9, Jul. 1996
Mowry et al., "Design and evaluation of a compiler algorithm for prefetching", ASPLOS V, ACM, pp.62-73, Oct. 1992
Carr et al., "Compiler optimization for improving data locality", ASPLOS VI, ACM, pp. 252-262, Oct. 1994
Holzle and Ungar, "Optimizing dyanamically dispatched calls with run time feedback", SIGPLAN, ACM, Jun. 1994, pp. 326-336
Holzle and Ungar, Reconciling responsiveness with performance in pure object oriented languages:, ACM Trans. on Prog. Lang. & Syst. vol. 18, No. 4, Jul. 1996, pp. 355-400
Chambers et al., "A framework for selective recompilation in the presence of complex intermodule dependencies", ICSE'95 ACM, pp. 221-230, Jan. 1995
Chambers and Ungar, "Making pure object oriented languages practical", OOPSLA'91, ACM, pp. 1-15, May 1991
Dean et al., "Selective specialization for object oriented languages", SIGPLAN'95, ACM, pp. 93-102, Feb. 1995
Dean and Chambers, "Towards better inlining decisions using inlining trials", LISP'94, ACM pp. 273-282, Mar. 1994