Estoy investigando un poco sobre el turbofan del V8 y tengo algunas preguntas sobre el Turbofan IR:
+) ¿Existe algún documento que describa la semántica del Turbofan IR? Descubrí que este IR se origina en Sea-of-Node (por Cliff Click), y así obtuve algunas pistas de sus documentos. Sin embargo, el IR del turboventilador parece ser un poco diferente al original. Por ejemplo, no hay borde de efecto en el Sea-of-Node original. Entonces, si hay algún documento que explique el Turbofan IR, sería realmente útil.
Gracias.
console.log(1); console.log(2); el compilador no debe reordenar las dos llamadas, porque eso cambiaría el comportamiento del programa, y eso no es algo que los compiladores puedan hacer (por razones obvias).
Las instrucciones no observables se pueden reordenar de la forma que desee el compilador. Por ejemplo, 1 + x + 2 podría reordenarse a x + 1 + 2 y luego simplificarse a x + 3 .
(Tenga en cuenta que esto no tiene nada que ver con Turbofan (o incluso con JavaScript), es una declaración general que se aplica a todos los compiladores para todos los idiomas).
Turbofan utiliza bordes de "efecto" entre los nodos para garantizar que siempre se conserve el orden observable de las operaciones.
Eso sería un error.
Puede encontrar documentación aquí: https://v8.dev/docs/turbofan