Withdraw
Loading…
Optimizations in Distributed Run-Time Compilation
Clausen, Lars Reder
Loading…
Permalink
https://hdl.handle.net/2142/10877
Description
- Title
- Optimizations in Distributed Run-Time Compilation
- Author(s)
- Clausen, Lars Reder
- Issue Date
- 2004-05
- Keyword(s)
- Distributed Systems
- Compilers
- Abstract
- Distributed run-time code generation is a useful technique that can easily be implemented using the technique known as ``compositional semantics.'' In this dissertation, we describe a new system, Jumbo, which adds run-time code generation features to Java. Its design allows code generators from disparate sources to be combined dynamically. Jumbo can be used to create highly adaptable code that can be distributed in binary form. In order to handle the increasing complexity of software, programmers have long been creating reusable function libraries. These libraries can be distributed in binary form, allowing distribution that does not reveal implementation secrets. While libraries allow sharing or sale of code fragments, the granularity and inflexibility of pre-compiled functions force the libraries to be either overly general or prohibitively specific. Run-time code generation systems present a light-weight alternative to function calls, where fragments of code, not necessarily in the form of whole functions, can be manipulated in order to create higher-quality specialized code. However, the currently existing run-time code generation systems either operate at the source level or take a non-compositional approach, and thus are not amenable to binary distribution. Jumbo implements a novel form of run-time compilation, where code fragments in binary form from several sources can be combined at run time to form efficient specialized code. By basing Jumbo on compositional semantics, we avoid the monolithic nature of traditional code generation systems. A distributed run-time code generation system allows some previously unknown functionality. For instance, in database systems, a client can create query functions that interact directly with the servers internal calls without either the query or the database implementation needing to be disclosed. Render farms can allow clients to specify textures with code that is merged with local, specialized functions, without disclosing their texture details. Anonymity, copyrights and trade secrets can be retained without sacrificing efficiency. Jumbo is also useful for non-distributed systems that can take advantage of staged compilation for efficiency. We show several examples of how Jumbo can be used simply as an optimization tool, allowing user-controlled and domain-specific optimizations. Jumbo can additionally be used in a manner similar to that of macros, providing a way to codify common programming practices. We also consider the question of optimizing the code generators and the generated code, and present a rewriting system for Java abstract syntax trees designed to optimize the code generators. This general-purpose optmizer exploits the compositional nature of Jumbo to make aggressive optimizations on the code generators for the individual code fragments.
- Type of Resource
- text
- Permalink
- http://hdl.handle.net/2142/10877
- Copyright and License Information
- You are granted permission for the non-commercial reproduction, distribution, display, and performance of this technical report in any format, BUT this permission is only for a period of 45 (forty-five) days from the most recent time that you verified that this technical report is still available from the University of Illinois at Urbana-Champaign Computer Science Department under terms that include this permission. All other rights are reserved by the author(s).
Owning Collections
Manage Files
Loading…
Edit Collection Membership
Loading…
Edit Metadata
Loading…
Edit Properties
Loading…
Embargoes
Loading…