Patent ID: 8276131

Claim:
A method for providing dynamic loop transfer within a dynamic compilation environment for a method having a first set of instructions being executed by an interpreter, the method having an execution stack including slots for storing a value of each local variable known to each subroutine of the method while the subroutine is active during execution by the interpreter, the method comprising: suspending execution of the method by the interpreter at a point for which a current execution state of the method can be captured from the execution stack; assigning the value in each slot of the execution stack in the current execution state to a corresponding slot of an array of values; scanning the first set of instructions to identify a data type for each local variable of the method that is not known in the current execution state and shares a slot in the execution stack with a local variable that is known; and generating a second set of instructions for the method, the second set of instructions being coded to be initially executed to declare each local variable that is known in the current execution state and each local variable for which a data type was identified while scanning the first set of instructions, assign each declared variable with the value assigned to the slot in the array of values that corresponds to the slot of the execution stack in which the value of the variable is stored during execution of the first set of instructions by the interpreter, and branch to a target point in the second set of instructions that corresponds to the point in the first set of instructions at which execution was suspended.