Comme l’a avancé Ross McIlroy, qui fait partie de l’équipe V8 Ignition Jump Starter, « avec Ignition, V8 compile les fonctions JavaScript dans un bytecode concis, qui est compris entre 50 % et 25 % de la taille du code machine non optimisé. Ce bytecode est alors exécuté par un interprète de haute performance qui donne des vitesses d'exécution sur les sites Web du monde réel proches de celles du code non optimisé généré par le compilateur existant de V8 ».
Et de continuer en disant que « dans Chrome 53, Ignition sera activé pour les appareils Android qui ont des mémoires RAM limitées (512 Mo ou moins), où les économies de mémoire sont les plus nécessaires. Les résultats des premières expériences dans le domaine montrent qu’Ignition réduit la mémoire de chaque onglet Chrome d'environ 5 % ».
Comme d’autres moteurs, V8 peut se servir d’une compilation à la volée des scripts en code machine pour des besoins de performance. Le code est d'abord établi par un compilateur de base, qui peut générer du code machine non optimisé rapidement. Le code compilé est analysé lors de l'exécution et éventuellement recompilé dynamiquement avec un compilateur d'optimisation plus avancée pour des performances de pointe. Avec V8, le pipeline d’exécution de script a des conditions nécessitant une machinerie complexe pour basculer entre le compilateur de base et deux autres compilateurs d’optimisation : CrankShaft et TurboFan. Avec ce processus, le code machine compilé à la volée peut consommer beaucoup de mémoire même si le code n’était exécuté qu’une seule fois. C’est à ce niveau qu’intervient Ignition, qui va exécuter le code en se servant de moins de mémoire.
Pour plus de précisions, l’interpréteur Ignition se sert des macros d'assembleur de TurboFan, indépendantes des architectures cibles, pour générer des gestionnaires de bytecode pour chaque opcode. TurboFan va alors compiler ces instructions pour l’architecture cible, ce qui va résulter en un code interpréteur grandement optimisé qui peut exécuter les instructions bytecode et interagir avec le reste de la machine virtuelle V8.
Ajouter Ignition au pipeline d'exécution de script ouvre des possibilités qui vont bien au-delà de la réduction de l’utilisation de la mémoire faite par V8. Si le premier point sur lequel se sont focalisés les ingénieurs Google avec Ignition est la réduction de la consommation de la mémoire, concernant le futur d’Ignition, Ross McIlroy affirme que « le pipeline d’Ignition a été conçu pour nous permettre de prendre de meilleures décisions sur le moment d'exécuter et d'optimiser le code pour accélérer le chargement des pages Web, réduire les déchets et rendre plus efficaces les échanges entre les différentes composantes de V8 ».
Source : blog V8