Just In Time dynamic compilers, also called JITs, are programs that postpone compilation (translation from some input language such as Java ByteCodes) until the code is actually needed to be run. At that point, the input code is translated into native machine instructions to form a code fragment, which is also stored in the fragment cache. If the code is needed again later, it is run from the cache at full native speed, so the cost of translation is amortized over many runs of the code.

Actually, many JITs do not translate all input code. Only code that is known to be executed several times (a so called "hot trace") is translated; other code may be interpreted. This would be a two stage DynamicTranslator. A multistage JIT such as Sun's HotSpot? (server version) also performs expensive optimizations usually reserved for StaticTranslators.

To find out what code is hot and what is not, the input code must be instrumented. For example, counters may be placed at the start of methods, and at all backwards conditional branches (which may form the end of loops).

-- MikeVanEmmerik - 01 Dec 2001

Revision: r1.1 - 01 Dec 2001 - 13:30 - MikeVanEmmerik
Copyright © 1999-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback