Abstract
We are designing and implementing a flexible infrastructure for mobile-object systems. Two fundamental innovations distinguish our architecture from other proposed solutions. First, our representation of mobile code is based on adaptive compression of syntax trees. Not only is this representation more than twice as dense as Java byte-codes, but it also encodes semantic information on a much higher level than linear abstract-machine representations such as p-code or Java byte-codes. The extra structural information that is contained in our mobile-code format is directly beneficial for advanced code optimizations. Second, our architecture achieves superior run-time performance by integrating the activity of generating executable code into the operating system itself. Rather than being an auxiliary function performed off-line by a stand-alone compiler, code generation constitutes a central, indispensable service in our system. Our integral code generator has two distinct modes of operation: instantaneous load-time translation and continuous dynamic re-optimization. In contrast to just-in-time compilers that translate individual procedures on a call-by-call basis, our system's integral code-generator translates complete code-closures in a single burst during loading. This has the apparent disadvantage that it introduces a minor delay prior to the start of execution. As a consequence, to some extent we have to favor compilation speed over code quality at load time. But then, the second operation mode of our embedded code generator soon corrects this shortcoming. Central to our run-time architecture is a thread of activity that continually optimizes all of the already executing software in the background. Since this is strictly a re-compilation of already existing code, and since it occurs completely in the background, speed is not critical, so that aggressive, albeit slow, optimization techniques can be employed. Upon completion, the previously executing version of the same code is supplanted by the newly generated one and re-optimization starts over. By constructing globally optimized code-images from mobile software components, our architecture is able to reconcile dynamic composability with the run-time efficiency of monolithic applications.
Preview
Unable to display preview. Download preview PDF.
References
G. Aigner and U. Hölzle; Eliminating Virtual Function Calls in C++ Programs; ECOOP'96 Conference Proceedings, published as Springer Lecture Notes in Computer Science, No. 1098, 142–166; 1996.
M. Brandis, R. Crelier, M. Franz, and J. Tempi; The Oberon System Family; SoftwarePractice and Experience, 25:12, 1331–1366; 1995.
P. P. Chang, S. A. Mahlke, and W. W. Hwu; Using Profile Information to Assist Classic Code Optimizations; SoftwarePractice and Experience, 21:12, 1301–1321; 1991.
C. Chambers and D. Ungar; Customization: Optimizing Compiler Technology for Self, a Dynamically-Typed Object-Oriented Programming Language; Proceedings of the ACM Sigplan '89 Conference Programming Language Design and Implementation, published as Sigplan Notices, 24:7, 146–160; 1989.
J. W. Davidson; A Retargetable Instruction Reorganizer; Proceedings of the ACM Sigplan '86 Symposium on Compiler Construction, Palo Alto, California, 234–241; 1986.
J. W. Davidson and C. W. Fraser; Code Selection through Object Code Optimization; ACM Transactions on Programming Languages and Systems, 6:4, 505–526; 1984.
United Kingdom Defence Research Agency; Frequently Asked Questions about ANDF, Issue 1.1; June 1993.
M. Franz and T. Kistler; Slim Binaries; Communications of the ACM, to appear; also available as Technical Report No. 96-24, Department of Information and Computer Science, University of California, Irvine; 1996.
M. Franz and T. Kistler; Juice; http://www.ics.uci.edu/∼juice.
M. Franz and S. Ludwig; Portability Redefined; in Proceedings of the Second International Modula-2 Conference, Loughborough, England; September 1991.
M. Franz; Emulating an Operating System on Top of Another; SoftwarePractice and Experience, 23:6, 677–692; 1993.
M. Franz; Code-Generation On-the-Fly: A Key to Portable Software; Doctoral Dissertation No. 10497, ETH Zürich, simultaneously published by Verlag der Fachvereine, Zürich, 3-7281-2115-0; 1994.
M. Franz; Technological Steps toward a Software Component Industry; in Programming Languages and System Architectures, Springer Lecture Notes in Computer Science, No. 782, 259–281; 1994.
G. J. Hansen; Adaptive Systems for the Dynamic Run-Time Optimization of Programs (Doctoral Dissertation); Department of Computer Science, Carnegie-Mellon University; 1974.
D. Ingalls; The Execution Time Profile as a Programming Tool; Design and Optimization of Compilers, Prentice-Hall; 1971.
M. Franz and T. Kistler; Juice; http://www.ics.uci.edu/∼juice.
T. Lindholm, F. Yellin, B. Joy, and K. Walrath; The Java Virtual Machine Specification; Addison-Wesley; 1996.
S. Macrakis; Protecting Source Code with ANDF; Open Software Foundation Research Institute; June 1993.
K. V. Nori, U. Amman, K. Jensen, H. H. Nägeli and C. Jacobi; Pascal-P Implementation Notes; in D.W. Barron, editor; Pascal: The Language and its Implementation; Wiley, Chichester; 1981.
Institut für Computersysteme, ETH Zürich, and Department of Information and Computer Science, University of California at Irvine; Oberon Software Distribution; http:/ /www-cs.inf.ethz.ch/Oberon.html or http://www.ics.uci.edu/∼oberon.
D. W. Wall; Experience with a Software-Defined Machine Architecture; ACM Transactions on Programming Languages and Systems, 14:3, 299–338; 1992.
T. A. Welch; A Technique for High-Performance Data Compression; IEEE Computer, 17:6, 8–19; 1984.
N. Wirth and J. Gutknecht; The Oberon System; SoftwarePractice and Experience, 19:9, 857–893; 1989.
N. Wirth and J. Gutknecht; Project Oberon: The Design of an Operating System and Compiler; Addison-Wesley; 1992.
N. Wirth; The Programming Language Oberon; Software-Practice and Experience, 18:7, 671–690; 1988.
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Franz, M. (1997). Adaptive compression of syntax trees and iterative dynamic code optimization: Two basic technologies for mobile object systems. In: Vitek, J., Tschudin, C. (eds) Mobile Object Systems Towards the Programmable Internet. MOS 1996. Lecture Notes in Computer Science, vol 1222. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-62852-5_19
Download citation
DOI: https://doi.org/10.1007/3-540-62852-5_19
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-62852-1
Online ISBN: 978-3-540-68705-4
eBook Packages: Springer Book Archive