Adaptive optimization is a technique in computer science that performs dynamic recompilation of portions of a program based on the current execution profile.
With a simple implementation, an adaptive optimizer may simply make a trade-off between just-in-time compilation and interpreting instructions.
Examples of adaptive optimization include HotSpot and HP's Dynamo system.
[1] In some systems, notably the Java Virtual Machine[citation needed], execution over a range of bytecode instructions can be provably reversed.
When these assumptions prove incorrect, the adaptive optimizer can 'unwind' to a valid state and then interpret the byte code instructions correctly.