A method and system of dynamically translating code that uses code
annotations to determine whether the dynamic translator must fully
materialize machine state. At compilation time, annotations are placed in
an application's executable file indicating the number of formal
parameters expected by each of the application's entry points. When the
application is dynamically translated, the dynamic translation system
(DTS) aggressively translates the application. Therefore, the DTS does not
generate instructions for materializing the machine state at potential
stopping points. When the application makes a system call that arms an
exception handler, the DTS looks to the annotations to determine the
number of formal parameters expected by the handler. If an exception
handler expects two or fewer parameters, then that handler does not use
the machine state. Conversely, if a handler expects three or more
parameters, then that handler may use the machine state. Therefore, if the
handler only has two formal parameters, then the DTS continues to
aggressively translate the application program. Otherwise, the DTS
discards all of the previously translated code and starts conservatively
translating the application.
Un metodo e un sistema dinamicamente di traduzione del codice che usa le annotazioni di codice per determinare se il traduttore dinamico debba completamente attuare la macchina dichiarano. A tempo di compilazione, le annotazioni sono disposte nella lima eseguibile dell'applicazione che indica il numero di parametri convenzionali previsti da ciascuno dei punti di entrata dell'applicazione. Quando l'applicazione è tradotta dinamicamente, il sistema di traduzione dinamico (DTS) traduce aggressivamente l'applicazione. Di conseguenza, il DTS non genera le istruzioni per attuare la macchina dichiara ai punti d'arresto potenziali. Quando l'applicazione fa una chiamata del sistema che l'armi un alimentatore di eccezione, il DTS osserva alle annotazioni per determinare il numero di parametri convenzionali previsti tramite l'alimentatore. Se un alimentatore di eccezione prevede due o pochi parametri, allora quell'alimentatore non utilizza la macchina dichiara. Per contro, se un alimentatore prevede tre o più parametri, quindi quell'alimentatore può utilizzare la macchina dichiarano. Di conseguenza, se l'alimentatore ha soltanto due parametri convenzionali, quindi il DTS continua a tradurre aggressivamente il programma di applicazione. Altrimenti, il DTS scarta tutto il codice precedentemente tradotto e comincia conservativamente tradurre l'applicazione.