Esta es la salida de v8 --module --trace-opt index.js . Puede ver que se completó la optimización de las funciones commonRandom and commonRandomJS .
... [completed optimizing 0x2b0e0824a769 <JSFunction commonRandom (sfi = 0x2b0e081d3985)> (target TURBOFAN)] ... [completed optimizing 0x2b0e0824a789 <JSFunction commonRandomJS (sfi = 0x2b0e081d39b9)> (target TURBOFAN)] ... Esta es la salida de v8 --module --trace-deopt index.js . Puede ver que las funciones commonRandom and commonRandomJS no se eliminaron.
[bailout (kind: deopt-soft, reason: Insufficient type feedback for compare operation): begin. deoptimizing 0x3907082827f9 <JSFunction randomMatrix (sfi = 0x3907081d39ed)>, opt id 0, bytecode offset 167, deopt exit 35, FP to SP delta 208, caller SP 0x7ffee6068410, pc 0x39070004611c] [bailout (kind: deopt-soft, reason: Insufficient type feedback for compare operation): begin. deoptimizing 0x39070824a839 <JSFunction randomMatrix (sfi = 0x3907081d39ed)>, opt id 2, bytecode offset 249, deopt exit 28, FP to SP delta 208, caller SP 0x7ffee6068410, pc 0x390700047265] [bailout (kind: deopt-soft, reason: Insufficient type feedback for unary operation): begin. deoptimizing 0x39070824a839 <JSFunction randomMatrix (sfi = 0x3907081d39ed)>, opt id 3, bytecode offset 349, deopt exit 23, FP to SP delta 264, caller SP 0x7ffee6068410, pc 0x390700047d5b] Implementé mi propio script de seguimiento de acuerdo con la implementación actual de https://github.com/v8/v8/blob/207f489fc5df0cab30b9cde373181c0242c0874c/src/runtime/runtime.h#L897 %GetOptimizationStatus y usé la misma cantidad de iteraciones que con --trace-opt/--trace-deopt banderas. Sin embargo, el indicador kTurboFanned es 0 , pero kOptimized and kMaglevved son ambos 1s . ¿Por que es esto entonces? ¿Qué significan entonces las banderas kTurbofanned , kOptimized y kMaglevved ?
Versiones: V8 version 9.9.67
V8 está, como siempre ha estado, en desarrollo activo. Para interpretar el resultado de %GetOptimizationStatus de 9.9.67, consulte la versión correcta de runtime.h: https://github.com/v8/v8/blob/9.9.67/src/runtime/runtime.h .
"Maglev" es un nuevo compilador, aún en desarrollo, y se ubica entre Sparkplug y Turbofan. La versión 9.9.x aún no la tenía.