Bonjour,
J'ai un exercice à faire en machine virtuelle mais je ne sais pas par où commencer.
Voici l'exercice :
Fast GET_FIELD
Le but est d’accélérer l'exécution d'un interpréteur. Une technique habituelle consiste à ré-écrire certaine instructions pour que celle-ci s'exécute plus rapidement. C'est ce que l'on se propose de faire avec l'instruction GET_FIELD.
L'instruction GET_FIELD est assez lente car celle-ci demande à chaque appel de trouver le objet classe correspondant à l'instance en sommet de pile, puis de chercher le champs par son nom dans la classe pour trouver l'offset qui permettra d'aller lire le champ de l'objet.
Pour accélérer les choses, l'idée est réserver une place supplémentaire dans chaque instruction GET_FIELD pour que si on demande le champ d'une instance d'une classe précédemment rencontré, l'index correspondant soit directement stocké dans l'instruction. En fait, c'est le même principe qu'un inlining cache, si on appel la même instruction avec des instances d'une même classe, l'index d'offset du champ n'a pas besoin d'être recalculé.
Quelqu'un saurait-il me guider un peu ?
Merci d'avance pour votre aide.
Partager