A computer-implemented system, method, and product are provided for
multi-branch backpatching in a dynamic translator. Such backpatching
typically increases the speed of execution of translated instructions by
providing a direct control path from translated multi-branch-jump
instructions to their translated target instructions. In one embodiment,
the multi-branch backpatching dynamic translator undertakes backpatching
on an "as-needed" basis at run time. That is, backpatching is done for
those branch targets that are executed rather than for all branch targets,
or rather than for those branch targets that are estimated or assumed will
be executed. Such backpatching is accomplished in one embodiment by
generating dynamic backpatching code specific to each translated
multi-branch-jump instruction. A multi-branch jump, or switch, table of
each multi-branch-jump instruction is initialized so that all entries
direct control to the dynamic backpatching code for that instruction. As
branches of the multi-branch-jump instruction are executed, the dynamic
backpatching code enables a backpatcher that replaces the corresponding
entry in the translated multi-branch-jump table with pointers to the
address of the translated target address, if present.
Un sistema, un método, y un producto computadora-puestos en ejecucio'n se proporcionan para el multi-rama backpatching en un traductor dinámico. El tal backpatching típicamente aumenta la velocidad de la ejecución de instrucciones traducidas proporcionando una trayectoria directa del control de traducido multi-rama-salta instrucciones a sus instrucciones traducidas de la blanco. En una encarnación, el multi-rama backpatching el traductor dinámico emprende backpatching sobre una base "como-necesaria" en el tiempo de pasada. Es decir, el backpatching se hace para esas blancos del rama que se ejecuten más bien que para todas las blancos del rama, o más bien que para esas blancos del rama se estimen o se asuman que será ejecutado. El tal backpatching es logrado en una encarnación generando el específico backpatching dinámico del código a cada traducido multi-rama-salta la instrucción. Se inicializa un salto del multi-rama, o el interruptor, tabla de cada multi-rama-salta la instrucción de modo que todas las entradas dirijan control al código backpatching dinámico para esa instrucción. Mientras que los ramas del multi-rama-saltan la instrucción se ejecutan, el código backpatching dinámico permiten un backpatcher que substituya la entrada correspondiente en traducida multi-rama-saltan la tabla con los indicadores a la dirección de la dirección traducida de la blanco, si presente.