A compiler is described that generates instructions to execute object-oriented method call invocations in an efficient manner. Specifically, a method dispatch operation distinguishes between those method calls that do not require dynamic invocation from those that do, and optimizes the instructions generated to perform the former. For each object class declaration encountered during compilation, a dispatch array is created. Each dispatch array contains entries for all method calls which can be made to the class, including those implemented in an ancestor class(es), and all protocols adopted by these classes. As each method call is parsed during compilation, if the compiler finds an entry for the calling method in a dispatch table, an instruction to call a non-dynamic method dispatch function is generated. If, on the other hand, no entry for the calling method is found in a dispatch array, the compiler generates a conventional dynamic method dispatch instruction. The non-dynamic method dispatch function uses the dispatch array to directly identify the calling method's executable code segment. Use of non-dynamic method invocation can provide a substantial speed gain during program execution.

Um compilador é descrito que gere instruções para executar invocations object-oriented da chamada do método em uma maneira eficiente. Especificamente, uma operação da expedição do método distingue entre aquelas chamadas do método que não requerem o invocation dinâmico daquelas que , e optimizes as instruções geradas para executar o anterior. Para cada declaração da classe do objeto encontrada durante a compilação, uma disposição da expedição é criada. Cada disposição da expedição contem entradas para todas as chamadas do método que podem ser feitas à classe, including aquelas executada em um class(es) do antepassado, e a todos os protocolos adotados por estas classes. Enquanto cada chamada do método está analisada gramaticalmente durante a compilação, se o compilador encontrar uma entrada para o método de chamada em uma tabela da expedição, uma instrução para chamar uma função non-dynamic da expedição do método está gerada. Se, na outra mão, nenhuma entrada para o método de chamada for encontrada em uma disposição da expedição, o compilador gera uma instrução dinâmica convencional da expedição do método. A função non-dynamic da expedição do método usa a disposição da expedição identificar diretamente o segmento de código executável do método de chamada. O uso do invocation non-dynamic do método pode fornecer um ganho substancial da velocidade durante a execução de programa.

 
Web www.patentalert.com

< (none)

< Loudspeaker assembly with adjustable directivity

> Method and apparatus extending coherence domain beyond a computer system bus

> (none)

~ 00002