A method and apparatus for handling asynchronous exceptions in a dynamic
translation system. In accordance with the present invention, the dynamic
translation system utilizes an interpreter to determine when a point in
the translated code has been reached at which application state is
recoverable. When an asynchronous event occurs, execution of translated
instructions in hardware is halted and control is transferred to the
interpreter at the point at which the exception occurred during the
translation. The interpreter then executes the translated code from the
point of interruption and checks for a guaranteed application state
recoverable point, or GAR point, at the end of each instruction or block
of instructions. Once a GAR point is reached, control is transferred to an
asynchronous exception handler. Since control is only transferred to the
interpreter once an asynchronous exception has occurred, overhead relating
to the handling of asynchronous exceptions is only incurred when an
asynchronous exception is actually pending.
Um método e um instrumento para segurar exceções assíncronas em um sistema dinâmico da tradução. De acordo com a invenção atual, o sistema dinâmico da tradução utiliza um intérprete para determinar quando um ponto no código traduzido foi alcançado em que o estado da aplicação é recoverable. Quando um evento assíncrono ocorre, a execução de instruções traduzidas na ferragem está parada e o controle é transferido ao intérprete no ponto em que a exceção ocorreu durante a tradução. O intérprete então executa o código traduzido do ponto do interruption e verifica-o para ver se há um ponto recoverable garantido do estado da aplicação, ou o ponto de PEIXE-AGULHA, no fim de cada instrução ou no bloco das instruções. Uma vez que um ponto do PEIXE-AGULHA é alcançado, o controle está transferido a um alimentador assíncrono da exceção. Desde que o controle é transferido somente ao intérprete uma vez uma exceção assíncrona ocorreu, em cima relacionando-se à manipulação de exceções assíncronas é incorrida somente quando uma exceção assíncrona é realmente pendente.