Methods and apparatus for dynamically deoptimizing a frame in a control
stack during the execution of a computer program are disclosed. The
described methods are particularly suitable for use in computer systems
that are arranged to execute both interpreted and compiled byte codes.
According to one aspect of the present invention, a computer-implemented
method for deoptimizing a compiled method includes creating a data
structure. The data structure, which is separate from the control stack,
is arranged to store information relating to the compiled method. A
reference indicator, such as a pointer, is created to associate the data
structure with the frame. The method, which is compiled to a first state
of optimization, is then deoptimized to a second state of optimization,
and the method in the first state of optimization may be discarded,
thereby deoptimizing the frame. When control returns to the deoptimized
frame, a migration routine creates at least one new stack frame, and
execution may continue using the method in the second state of
optimization.