Capisco che la maggior parte dei browser recenti utilizza la compilazione JIT per eseguire javascript. Quello che non capisco è: quale parte di javascript è JIT - lo script, o il bytecode?
Lasciami spiegare. Da quanto ho capito, V8 prende il tuo JS e lo compila in linguaggio macchina (non bytecode) con l'output inserito nella RAM invece di essere scritto in un file separato sull'unità. Le ottimizzazioni seguono come da requisiti futuri.
Informazioni sul motore Chakra: questo link dice che il codice sorgente viene convertito in bytecode e quindi passato a un'unità di esecuzione bytecode dove viene eseguito tramite un interprete o un compilatore JIT. Quello che non dice è: in che modo il javascript viene convertito in bytecode in primo luogo? È JIT che si è compilato da solo - (ci ha effettivamente dato due nervosismi lavorando da capo a lato) - o è compilato più tradizionalmente? Dove viene posizionato l'output? RAM o qualche posto temporaneo sul disco?
E come funziona SpiderMonkey? Sembra che sia come Chakra / ChakraCore.
Mentre ci siamo, ti piacerebbe spiegare HHVM e php 7 nello stesso contesto? Il bytecode JITed o il codice sorgente JITed? O è entrambi?