Caches Inline de SpiderMonkey: Más Allá del Caché Simple

2025-09-14

Esta publicación profundiza en la implementación de las cachés en línea (IC) dentro del motor JavaScript SpiderMonkey. A diferencia del almacenamiento en caché tradicional, la IC de SpiderMonkey es una técnica de código automodificable. Inserta una serie de stubs en los sitios de llamada, seleccionando dinámicamente rutas de ejecución eficientes en función de los tipos de entrada. La primera llamada ejecuta una ruta de respaldo y genera stubs correspondientes en función del resultado. Las llamadas posteriores del mismo tipo alcanzan la caché, mejorando significativamente la eficiencia. El artículo utiliza la suma de JavaScript como ejemplo para explicar cómo funciona la IC y menciona la arquitectura CacheIR más reciente de SpiderMonkey, que abstrae los detalles de las IC para permitir el intercambio entre diferentes compiladores.

Leer más
Desarrollo caché en línea

Seguimiento de la asignación de memoria de Firefox con eBPF

2025-05-31

El autor utilizó eBPF (extended Berkeley Packet Filter) para rastrear la asignación de memoria en SpiderMonkey, el motor JavaScript de Firefox. El objetivo inicial era identificar las ubicaciones de origen de las frecuentes creaciones de objetos Rooted para la optimización de la gestión de memoria. Utilizando la herramienta bpftrace y las sondas de usuario (uprobes), el autor rastreó con éxito la función `registerWithRootLists` y utilizó la función ustack para obtener información de la pila de llamadas. Finalmente, el autor generó informes y abrió varias incidencias, optimizando la asignación de memoria y reduciendo decenas de millones de llamadas a `registerWithRootLists`.

Leer más
Desarrollo