Les caches inline de SpiderMonkey : au-delà du simple cache

2025-09-14

Cet article explore en profondeur l'implémentation des caches inline (IC) dans le moteur JavaScript SpiderMonkey. Contrairement au caching traditionnel, l'IC de SpiderMonkey est une technique de code auto-modifiable. Il insère une série de stubs aux sites d'appel, sélectionnant dynamiquement des chemins d'exécution efficaces en fonction des types d'entrée. Le premier appel exécute un chemin de secours et génère des stubs correspondants en fonction du résultat. Les appels suivants du même type atteignent le cache, améliorant ainsi considérablement l'efficacité. L'article utilise l'addition JavaScript comme exemple pour expliquer le fonctionnement de l'IC et mentionne la dernière architecture CacheIR de SpiderMonkey, qui abstrait les détails des IC pour permettre le partage entre différents compilateurs.

Lire plus
Développement

Suivi de l'allocation mémoire de Firefox avec eBPF

2025-05-31

L'auteur a utilisé eBPF (extended Berkeley Packet Filter) pour suivre l'allocation mémoire dans SpiderMonkey, le moteur JavaScript de Firefox. L'objectif initial était d'identifier les emplacements sources des créations fréquentes d'objets Rooted pour optimiser la gestion de la mémoire. Utilisant l'outil bpftrace et les sondes utilisateur (uprobes), l'auteur a suivi avec succès la fonction `registerWithRootLists` et a utilisé la fonction ustack pour obtenir des informations sur la pile d'appels. Finalement, l'auteur a généré des rapports et ouvert plusieurs rapports de bogues, optimisant l'allocation mémoire et réduisant des dizaines de millions d'appels à `registerWithRootLists`.

Lire plus
Développement