TraceMonkey

TraceMonkey

Em formação
O Criador Fundação Mozilla
Modelo Compilador on-the-fly

TraceMonkey é um compilador dinâmico para o mecanismo de tempo de execução do JavaScript SpiderMonkey . TraceMonkey é um mecanismo de gravação, compilação e execução de rastreamento de tempo de execução JavaScript criado pela Mozilla Foundation para o renderizador Gecko . Ele apareceu pela primeira vez no Mozilla Firefox 3.5.

Ele foi criado para melhorar o desempenho do tempo de execução do JavaScript do mecanismo SpiderMonkey , permitindo assim que os desenvolvedores da web entreguem aplicativos da web que antes eram impossíveis de alcançar devido ao baixo desempenho do JavaScript.

Princípio da Operação

TraceMonkey executa a compilação de tempo da árvore de trilhas . Árvores de rastreamento são uma estrutura de dados usada para rastrear (registrar em um rastreamento) código executado em pontos de acesso e compilá-lo. Quando os pontos de acesso do código são executados novamente, o código compilado é executado.

Implementação

No Firefox, o interpretador JavaScript é chamado SpiderMonkey . O último foi modificado para fazer interface com TraceMonkey, o mecanismo de rastreamento. SpiderMonkey interpreta o código JavaScript, monitora as execuções de loop e conta o número de iterações. Quando o limite do número de execuções de uma iteração é atingido, o TraceMonkey registra os traços, compila-os em código nativo graças ao nanojit e os executa.

Sucessos e limites

Os desenvolvedores da Mozilla afirmam que o TraceMonkey é o mecanismo JavaScript mais rápido do mundo, quando consegue permanecer nos rastros compilados. Infelizmente, uma série de condições tornam difícil ou mesmo impossível o uso de rastreios:

Nesses casos, a execução do código JavaScript é feita com o interpretador SpiderMonkey , o que a torna muito mais lenta. Para superar isso, a Mozilla lançou o projeto JägerMonkey que visa usar um compilador on-the-fly para acelerar a execução de código localizado fora dos traces.

Notas e referências

  1. (em) Rastreamento wiki JIT Mozilla
  2. (em) uma nota rápida sobre os componentes do mecanismo JavaScript , Christopher Blizzard
  3. (em) Iniciando JägerMonkey David Mandelin

Veja também

Artigos relacionados