Dans Firefox un nouveau compilateur JIT, sous le nom de code WarpBuilder. Une option «javascript.options.warp» est proposée dans about:config pour activer le nouveau JIT.
Il est à noter que WarpBuilder n'est que la première étape vers l'intégration de nouvelles optimisations dans le navigateur, qui devraient être mises en œuvre au cours de l'année prochaine.
Le nouveau JIT permet d'augmenter les performances du moteur JavaScript SpiderMonkey grâce à une réduction de l'information interne sur les types suivis dans le moteur, et à l'application de la technique de mise en cache du code intermédiaire (CacheIR), précédemment dans l'interpréteur de bytecode «baseline», qui occupe une place intermédiaire entre un interpréteur classique et un compilateur JIT anticipé. Ces modifications ont permis de simplifier considérablement l'architecture JIT, d'augmenter la réactivité, de réduire le temps de chargement des pages et de diminuer la consommation de mémoire.
, ce qui a permis au nouveau JIT de résoudre de nombreux problèmes de l'ancien JIT IonBuilder, tels que :
- La complexité de l'implémentation et les risques de sécurité potentiels ;
- Des charges supplémentaires pour le code Baseline/C++ ;
- Une spécialisation excessive, entraînant des recompilations inutiles ;
- La création de code intermédiaire (IR de niveau intermédiaire) dans le flux principal (dans WarpBuilder, l'assemblage principal du code intermédiaire est déplacé dans un flux séparé);
- Une consommation excessive de mémoire pour stocker des données sur les types et les groupes d'objets (ObjectGroups).
En moyenne, dans les tests évaluant les performances sur la base de métriques visuelles, l'utilisation de WarpBuilder montre une accélération de 5 à 15%. La vitesse du test Speedometer a augmenté de 10%. Les tests sur des sites réels ont montré une réduction du temps de chargement de Google Docs de , l'indice lors de l'ouverture de la section Android sur Reddit s'est amélioré de , pdfpaint fonctionne plus rapidement sur . La consommation de mémoire dans le test a diminué de 8%. dans les outils pour développeurs (devtools perf) ont également démontré une réduction de la consommation de mémoire de 8%.
Source : opennet.ru
