Eliminação de testes de overflow para compiladores de trilhas

dc.creatorMarcos Rodrigo Sol Souza
dc.date.accessioned2019-08-12T20:21:27Z
dc.date.accessioned2025-09-09T00:54:01Z
dc.date.available2019-08-12T20:21:27Z
dc.date.issued2011-01-25
dc.description.abstractTrace compilation is a new technique used by just-in-time (JIT) compilers such as TraceMonkey, the JavaScript engine in the Mozilla Firefox browser. Contrary to traditional JIT machines, a trace compiler works on only part of the source program, normally a linear path inside a heavily executed loop. Because the trace is compiled during the interpretation of the source program the JIT compiler has access to the values manipulated at runtime. This observation gives to the compiler the possibility of producing binary code specialized to these values. In this thesis we explore this opportunity to provide an analysis that removes unnecessary overflow tests from JavaScript programs. Our optimization uses range analysis to show that some operations cannot produce overflows. The analysis is linear in size and space on the number of instructions present in the input trace, and it is more effective than traditional range analyses, because we have access to values known only at execution time. We have implemented our analysis on top of Firefox's TraceMonkey, and have tested it on over 1000 scripts from several industrial strength benchmarks, including the scripts present in the top 100 most visited webpages in the Alexa index. We generate binaries to either x86 or the embedded microprocessor ST40-300. On the average, we eliminate 91.82% of the overflows in the programspresent in the TraceMonkey test suite. This optimization provides an average code size reduction of 8.83% on ST40 and 6.63% on x86. Our optimization increases TraceMonkey's runtime by 2.53%.
dc.identifier.urihttps://hdl.handle.net/1843/SLSS-8GPQ97
dc.languageInglês
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.subjectComputação
dc.subjectCompiladores (Programas de computador)
dc.subject.otherCompiladores
dc.titleEliminação de testes de overflow para compiladores de trilhas
dc.typeDissertação de mestrado
local.contributor.advisor-co1Fernando Magno Quintao Pereira
local.contributor.advisor1Mariza Andrade da Silva Bigonha
local.contributor.referee1Vladimir Oliveira Di Iorio
local.contributor.referee1Roberto da Silva Bigonha
local.description.resumoCompilação de trilhas é uma nova técnica utilizada por compiladores just-in-time (JIT) como o TraceMonkey, o compilador de JavaScript do navegador Mozilla Firefox. Diferente dos compiladores just-in-time tradicionais, um compilador de trilhas trabalha somente com uma parte do programa fonte, geralmente um caminho linear de instruções que são frequentemente executadas dentro de um laço. Como uma trilha é compilada durante a interpretação de um programa, o compilador just-in-time tem acesso aos valores manipulados em tempo de execução. A capacidade de acessar esses valores permite ao compilador a possibilidade de produzir código de máquina mais otimizado. Nesta dissertação é explorada a oportunidade de prover uma análise que remove testes de overflow desnecessários de programas JavaScript. Para mostrar que algumas operações não podem causar overflows é utilizada uma técnica denominada análise de largura de variáveis. A otimização proposta é linear em tamanho e espaço com o número de instruções presentes na trilha de entrada, e é mais efetiva que as análises de largura de variável tradicionais porque utiliza valores conhecidos em tempo de execução. A otimização proposta foi implementada no navegador Mozilla Firefox, e testada em mais de 1.000 programas JavaScript de diversas coleções, incluindo os 100 sítios mais visitados da Internet segundo o índice Alexa. Foram produzidos códigos binários para as arquiteturas x86 e ST40-300. Na média, a otimização proposta foi capaz de remover 91.82% dos testes de overflow nos programas presentes na coleção de programas de teste do TraceMonkey. A otimização proposta prove uma redução do tamanho do código binário de 8.83% na plataforma ST40 e de 6.63% na plataforma x86. A otimização aumenta o tempo de execução do compilador TraceMonkey em 2.53.
local.publisher.initialsUFMG

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
marcosrodrigosolsouza.pdf
Tamanho:
2.98 MB
Formato:
Adobe Portable Document Format