Run-Time Code Generation as a Central System Service

  • Authors:
  • M. Franz

  • Affiliations:
  • -

  • Venue:
  • HOTOS '97 Proceedings of the 6th Workshop on Hot Topics in Operating Systems (HotOS-VI)
  • Year:
  • 1997

Quantified Score

Hi-index 0.00

Visualization

Abstract

We are building an operating system in which an integral run time code generator constantly strives to improve the quality of already executing code. Our system is based on a platform independent software distribution format twice as dense as Java byte codes that is translated into native code only at the time of loading. This initial translation happens in a single burst and puts compilation speed ahead of code quality, so that program execution can commence immediately. However, the native code generated during loading will usually not be executed for long. Immediately after a program has started running, its code image becomes a candidate for reoptimization. A background process that executes only during otherwise idle processor cycles continuously recompiles parts of the already running system, guided by run time profiling data, and is able to substitute already executing code in situ. This reoptimization encompasses not only user programs, but also many of the system libraries, eventually combining an application program and most of its dynamically loaded extensions and libraries into a single, fully cross optimized, quasi monolithic code image. Our system is thereby able to provide the efficiency of statically optimized software in spite of being extensible at run time.