Abstract
Run-time code generation (RTCG) would be used routinely if application programmers had a facility with which they could easily create their own run-time code generators, because it would offer benefits both in terms of the efficiency of the code that programmers would produce and the ease of producing it. Such a facility would necessarily have the following properties: it would not require that programmers know assembly language; programmers would have full control over the generated code; the code generator would operate entirely at the binary level. In this paper, we offer arguments and examples supporting these assertions. We briefly describe Jumbo, a system we have built for producing run-time code generators for Java..
- A. Bawden. Quasiquotation in Lisp. In Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM-99). San Antonio, Texas. January 1999. 22--23.]]Google Scholar
- J. Bell, F. Bellegarde, J. Hook. R. B. Kieburtz, A. Kotov, J. Lewis, L. McKinney, D. P. Oliva, T. Sheard, L. Tong, L. Walton, T. Zhou. Software design for reliability and reuse: A proof-of-concept demonstration. TRI-Ada '94. 1994.]] Google ScholarDigital Library
- D. D Clark, D. L. Tennenhouse. Architectural Considerations for a New Generation of Protocols. ACM SIGCOMM. 1990. 200--208.]] Google ScholarDigital Library
- L. Clausen. Optimizations in Distributed Run-time Compilation. Univ. of Illinois PhD thesis. 2003 (forthcoming).]] Google ScholarDigital Library
- O. Danvy, R. Glück, P. Thiemann, (eds.). Partial Evaluation. Lecture Notes in Computer Science 1110. Springer-Verlag. Heidelberg. 1996.]] Google ScholarDigital Library
- D. Engler, W. Hsieh, M. Kaashoek. 'C: A language for high- level, efficient, and machine-independent dynamic code generation. In 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '96). St. Petersburg Beach, Florida. January 1996. 131--144.]] Google ScholarDigital Library
- P. Graham. Being Popular. On-line article at www.paulgraham.com/popular.html. May 1991.]]Google Scholar
- P. Graham. Revenge of the Nerds. Intl. ICAD Users Group Annual Conference. Boston. May 2002. Expanded version at www.paulgraham.com/icad.html.]]Google Scholar
- B. Grant, M. Mock. M. Philipose, C. Chambers, S. J. Eggers. Annotation-directed run-time specialization in C. In Proc. Conf. on Partial Evaluation and Program Manipulation (PEPM). 1997. 163--178.]] Google ScholarDigital Library
- U. Holzle. Adaptive optimization for Self: Reconciling High Performance with Exploratory Programming. Stanford Univ. CS Dept. Tech. Rpt. STAN-CS-TR-94--1520. 1994.]] Google ScholarDigital Library
- S. Kamin. Standard ML as a meta-programming language. Univ. of Illinois Computer Science Dept. September, 1996. Available at www-faculty.cs.uiuc.edu/~kamin/pubs/.]]Google Scholar
- S. Kamin, M. Callahan, L. R. Clausen. Lightweight and generative components I: Source-level components. In Proc. First International Symposium on Generative and Component-Based Software Engineering (GCSE'99), September 28--30, 1999. 49--64.]] Google ScholarDigital Library
- S. Kamin, M. Callahan, L. R. Clausen. Lightweight and generative components II: Binary-level components. In International Workshop on Semantics, Applications, and Implementation of Program Generation (SAIG 2000). Montreal, Canada. September 20, 2000. Lecture Notes in Computer Science 1924. Springer. 2000. 28--50.]] Google ScholarDigital Library
- S. Kamin, L. R. Clausen, A. Jarvis. Jumbo: Run-time code generation for Java, and its applications. Conf. on Code Generation and Optimization (CGO). San Francisco. March 2003. 48--58.]] Google ScholarDigital Library
- R. Keller, U. Holzle. Binary Component Adaptation. UC Santa Barbara Dept. of Computer Science. Tech. Rpt. TRCS97-20. Dec. 1997.]] Google ScholarDigital Library
- D. Keppel, S. J. Eggers, R. R. Henry. A Case for Runtime Code Generation. Univ. of Washington Dept. of Computer Science and Engineering Tech. Rpt. 91-11-04. November 1991.]]Google Scholar
- G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Videira Lopes, J.-M. Loingtier, J. Irwin. Aspect-Oriented Programming. Proc. European Conference on Object- Oriented Programming (ECOOP), Finland. Springer-Verlag LNCS 1241. June 1997.]]Google Scholar
- T. Kistler, M. Franz. A Tree-Based Alternative to Java Byte-Codes. International Journal of Parallel Programming 27:1. February 1999. 21--34.]] Google ScholarDigital Library
- G. Kniesel, P. Costanza, M. Austermann. JMangler -- A framework for load-time transformation of Java class files. Proc. IEEE International Workshop on Source Code Analysis and Manipulation. IEEE Computer Society Press. 2001.]]Google ScholarCross Ref
- P. Lee, M. Leone. Optimizing ML with Run-Time Code Generation. SIGPLAN Conference on Programming Language Design and Implementation. 1996. 137--148.]] Google ScholarDigital Library
- C. Luer, A. van der Hoek. Composition environments for deployable software components. UC Irvine Dept. of Information and Computer Science Tech. Rpt. 02--18. April 2002.]]Google Scholar
- Y. Oiwa, H. Masuhara, A. Yonezawa. DynJava: Type Safe Dynamic Code Generation in Java. 3rd JSSST Workshop on Programming and Programming Languages (PPL2001). March 2001.]]Google Scholar
- C. Plinta, K. Lee, M. Rissman. A model solution for C3I message translation and validation. Software Engineering Inst. Carnegie-Mellon Univ. Tech. Rpt. CMU/SEI-89-TR-12. December 1989.]]Google Scholar
- M. Poletto, W. C. Hsieh, D. R. Engler, D. R., M. F. Kaashoek. 'C and tcc: a Language and Compiler for Dynamic Code Generation. Transactions on Programming Languages and Systems 21:2. March 1999. 324--369.]] Google ScholarDigital Library
- U. Schultz, J. L. Lawall, C. Consel, G. Muller. Towards Automatic Specialization of Java Programs. Lecture Notes in Computer Science 1628. Springer. 1999.]] Google ScholarDigital Library
- C. Simonyi. The death of computer languages, the birth of Intentional Programming. Microsoft Research Tech. Rpt. MSR-TR-95-52. 1995.]]Google Scholar
- B. Stroustrup. Separate compilation must stay! AT&T Tech. Rpt. 1996.]]Google Scholar
- Sun Microsystems Incorporated. The Java hotspot performance engine architecture: A white paper about Sun's second generation performance technology. Technical report. April 1999.]]Google Scholar
- C. Szyperski. Component Software. ACM. New York. 1997.]]Google Scholar
- W. Taha, T. Sheard. Multi-stage programming with explicit annotations. In Proc. ACM SIGPLAN Symp. on Partial Evaluation and Semantics-Based Program Manipulation (PEPM). ACM SIGPLAN Notices 32: 12. New York. June 12--13, 1997. 203--217.]] Google ScholarDigital Library
Index Terms
- Routine run-time code generation
Recommendations
Routine run-time code generation
OOPSLA '03: Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsRun-time code generation (RTCG) would be used routinely if application programmers had a facility with which they could easily create their own run-time code generators, because it would offer benefits both in terms of the efficiency of the code that ...
Jumbo: run-time code generation for Java and its applications
CGO '03: Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimizationRun-time code generation is a well-known technique for improving the efficiency of programs by exploiting dynamic information. Unfortunately, the difficulty of constructing run-time code-generators has hampered their widespread use. We describe Jumbo, a ...
Certifying Compilation and Run-Time Code Generation
A certifying compiler takes a source language program and produces object code, as well as a “certificate” that can be used to verify that the object code satisfies desirable properties, such as type safety and memory safety. Certifying compilation helps ...
Comments