In generale, La compilazione just-in-time si riferisce alla compilazione del codice nativo in fase di esecuzione e all'esecuzione anziché all'interpretazione (o in aggiunta a). Alcune macchine virtuali, come Google V8, non hanno nemmeno un interprete; loro JIT compilano ogni funzione che viene eseguita (con vari gradi di ottimizzazione).
On Stack Replacement (OSR) è una tecnica per il passaggio tra diverse implementazioni della stessa funzione. Ad esempio, è possibile utilizzare l'OSR per passare dal codice interpretato o non ottimizzato al codice JIT non appena termina la compilazione.
L'OSR è utile in situazioni in cui si identifica una funzione come "hot" mentre è in esecuzione. Questo potrebbe non essere necessariamente perché la funzione viene chiamata frequentemente; potrebbe essere chiamato solo una volta, ma trascorre molto tempo in un grande ciclo che potrebbe trarre vantaggio dall'ottimizzazione. Quando si verifica l'OSR, la VM viene messa in pausa e il frame dello stack per la funzione di destinazione viene sostituito da un frame equivalente che può avere variabili in posizioni diverse.
L'OSR può verificarsi anche nell'altra direzione: da codice ottimizzato a codice non ottimizzato o codice interpretato. Il codice ottimizzato può formulare alcune ipotesi sul comportamento di runtime del programma in base al comportamento passato. Ad esempio, è possibile convertire una chiamata di metodo virtuale o dinamica in una chiamata statica se si è sempre visto un solo tipo di oggetto destinatario. Se in seguito risulta che queste ipotesi erano sbagliate, l'OSR può essere utilizzato per ricorrere a un'implementazione più prudente: il frame dello stack ottimizzato viene convertito in uno stack frame non ottimizzato. Se la VM supporta l'inlining, si potrebbe persino finire per convertire uno stack frame ottimizzato in diversi frame stack non ottimizzati.
fonte
2012-02-02 01:20:20
Né google né wikipedia possono dirmi che cos'è l'OSR. –
@ MaurícioLinhares google mi ha detto che è una sostituzione su stack. –
Questo blog è un'altra buona risorsa ... http://www.azulsystems.com/blog/cliff/2011-11-22-what-the-heck-is-osr-and-why-is-it-bad- o-good –