Adaptive compression of syntax trees and iterative dynamic code optimization: Two basic technologies for mobile object systems

  • Michael Franz
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1222)


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.


Object File Load Time Syntax Tree Java Virtual Machine Object Code 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [AH96]
    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.Google Scholar
  2. [BCF95]
    M. Brandis, R. Crelier, M. Franz, and J. Tempi; The Oberon System Family; SoftwarePractice and Experience, 25:12, 1331–1366; 1995.Google Scholar
  3. [CMH91]
    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.Google Scholar
  4. [CU89]
    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.Google Scholar
  5. [Dav86]
    J. W. Davidson; A Retargetable Instruction Reorganizer; Proceedings of the ACM Sigplan '86 Symposium on Compiler Construction, Palo Alto, California, 234–241; 1986.Google Scholar
  6. [DF84]
    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.Google Scholar
  7. [DRA93]
    United Kingdom Defence Research Agency; Frequently Asked Questions about ANDF, Issue 1.1; June 1993.Google Scholar
  8. [FK96]
    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.Google Scholar
  9. [Juice]
    M. Franz and T. Kistler; Juice;∼juice.Google Scholar
  10. [FL91]
    M. Franz and S. Ludwig; Portability Redefined; in Proceedings of the Second International Modula-2 Conference, Loughborough, England; September 1991.Google Scholar
  11. [Fra93]
    M. Franz; Emulating an Operating System on Top of Another; SoftwarePractice and Experience, 23:6, 677–692; 1993.Google Scholar
  12. [Fra94a]
    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.Google Scholar
  13. [Fra94b]
    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.Google Scholar
  14. [Han74]
    G. J. Hansen; Adaptive Systems for the Dynamic Run-Time Optimization of Programs (Doctoral Dissertation); Department of Computer Science, Carnegie-Mellon University; 1974.Google Scholar
  15. [Ing71]
    D. Ingalls; The Execution Time Profile as a Programming Tool; Design and Optimization of Compilers, Prentice-Hall; 1971.Google Scholar
  16. [Juice]
    M. Franz and T. Kistler; Juice;∼juice.Google Scholar
  17. [LYJ96]
    T. Lindholm, F. Yellin, B. Joy, and K. Walrath; The Java Virtual Machine Specification; Addison-Wesley; 1996.Google Scholar
  18. [Mac93]
    S. Macrakis; Protecting Source Code with ANDF; Open Software Foundation Research Institute; June 1993.Google Scholar
  19. [NAJ76]
    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.Google Scholar
  20. [Oberon]
    Institut für Computersysteme, ETH Zürich, and Department of Information and Computer Science, University of California at Irvine; Oberon Software Distribution; http:/ / or∼oberon.Google Scholar
  21. [Wal92]
    D. W. Wall; Experience with a Software-Defined Machine Architecture; ACM Transactions on Programming Languages and Systems, 14:3, 299–338; 1992.Google Scholar
  22. [Wel84]
    T. A. Welch; A Technique for High-Performance Data Compression; IEEE Computer, 17:6, 8–19; 1984.Google Scholar
  23. [WG89]
    N. Wirth and J. Gutknecht; The Oberon System; SoftwarePractice and Experience, 19:9, 857–893; 1989.Google Scholar
  24. [WG92]
    N. Wirth and J. Gutknecht; Project Oberon: The Design of an Operating System and Compiler; Addison-Wesley; 1992.Google Scholar
  25. [Wir88]
    N. Wirth; The Programming Language Oberon; Software-Practice and Experience, 18:7, 671–690; 1988.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • Michael Franz

There are no affiliations available

Personalised recommendations