A method and system for anticipatory optimization of computer programs. The
system generates code for a program that is specified using
programming-language-defined computational constructs and user-defined,
domain-specific computational constructs, the computational constructs
including high-level operands that are domain-specific composites of
low-level computational constructs. The system generates an abstract
syntax tree (AST) representation of the program in a loop merging process.
The AST has nodes representing the computational constructs of the program
and abstract optimization tags for folding of the composites. A composite
folding process is applied to the AST according to the optimization tags
to generate optimized code for the program. The composite folding process
includes identifying an optimization event, identifying each abstract
optimization tag applied to the programming-language-defined computational
constructs and having a transformation condition identifying the
optimization event as a condition for attempting an anticipated
optimization in the translation, and attempting execution of each of the
anticipated optimization transformations associated with the optimization
event.
Um método e um sistema para o optimization antecipador de programas de computador. O sistema gera o código para um programa que seja especificado usando construções computacionais program-língua-definidas e construções computacionais user-defined, domínio-específicas, as construções computacionais including os operandos high-level que são compostos domínio-específicos de construções computacionais de baixo nível. O sistema gera uma respresentação da árvore do abstract syntax (AST) do programa em um laço que funde o processo. O AST tem nós representar as construções computacionais dos Tag do optimization do programa e do sumário para a dobradura dos compostos. Um processo dobrando-se composto é aplicado ao AST de acordo com os Tag do optimization para gerar o código optimized para o programa. O processo dobrando-se composto inclui identificar um evento do optimization, identificar cada Tag abstrato do optimization aplicado às construções computacionais program-língua-definidas e ter uma condição da transformação identificar o evento do optimization como uma condição para tentar um optimization antecipado na tradução, e tentar a execução de cada uma das transformações antecipadas do optimization associadas com o evento do optimization.