The present invention eliminates redundant array range checks. A two-phased
check is performed, namely a wide range check is performed by combining a
plurality of array range checks, and a strict range check is unsuccessful,
so as to reduce the number of range checks at execution time and allow
execution at high speed. For instance, it is possible with a processor
such as PowerPC, by using a flag, to invalidate a code for performing an
array range check at high speed without increasing a code size.
Consequently, the number of array range checks to be executed can be
reduced so as to allow execution at high speed. Also, for instance, a
plurality of array range checks can be combined without considering
existence of instructions which cause a side effect. Consequently, the
number of array range checks to be executed can be reduced so as to allow
execution at high speed. In addition, a versioning is performed by using,
as array access information for versioning, information of array access
information for versioning information of array accesses which are always
performed even if passing through any execution path in a loop so that
there are fewer cases where it goes to a version with a larger number of
array range checks at execution time.
A invenção atual elimina verificações redundantes da escala da disposição. Uma verificação dois-two-phased é executada, a saber uma verificação da escala larga é executada combinando um plurality de verificações da escala da disposição, e uma verificação estrita da escala é mal sucedida, para reduzir o número de verificações da escala no tempo de execução e permitir a execução na alta velocidade. Por exemplo, é possível com um processador tal como PowerPC, usando uma bandeira, invalidate um código para executar uma verificação da escala da disposição na alta velocidade sem aumentar um tamanho de código. Conseqüentemente, o número das verificações da escala da disposição a ser executadas pode ser reduzido para permitir a execução na alta velocidade. Também, por exemplo, um plurality de verificações da escala da disposição pode ser combinado sem considerar a existência das instruções que causam um efeito lateral. Conseqüentemente, o número das verificações da escala da disposição a ser executadas pode ser reduzido para permitir a execução na alta velocidade. Além, versioning é executado usando, enquanto a informação para versioning, informação do acesso da disposição da informação do acesso da disposição para a informação versioning dos acessos da disposição que estão executados sempre mesmo se passando através de qualquer trajeto da execução em um laço de modo que haja poucos casos aonde vai a uma versão com um número maior da escala da disposição verifica no tempo de execução.