Tu parles justement de compilation classique... Si un VM est capable d'optimiser des fonctions par rapport aux données du programme exécuté, qu'est-ce qui empêche le compilateur de générer du code capable de ces même "prouesses"?
Oui on peut envisager des choses de ce coté là. Mais la VM voit l'exécution, le compilateur non. La VM voit que telle fonction est très utilisée à un instant du programme, moins après. Ses choix se feront au fur et à mesure. Le compilateur ne peut pas prévoir comment va se dérouler l'exécution (en particulier puisque plusieurs exécutions peuvent etre très différentes). La seule solution, c'est ce que tu dis, générer du code à la volée. C'est ca qui me paraissait plus simple ou naturel pour une VM que pour du natif (la VM a de toutes facons besoin de générer le code, et elle dispose du bytecode.)
[^] # Re: Oui, mais...
Posté par #3588 . En réponse à la dépêche Miguel DeIcaza et .NET. Évalué à 1.
Oui on peut envisager des choses de ce coté là. Mais la VM voit l'exécution, le compilateur non. La VM voit que telle fonction est très utilisée à un instant du programme, moins après. Ses choix se feront au fur et à mesure. Le compilateur ne peut pas prévoir comment va se dérouler l'exécution (en particulier puisque plusieurs exécutions peuvent etre très différentes). La seule solution, c'est ce que tu dis, générer du code à la volée. C'est ca qui me paraissait plus simple ou naturel pour une VM que pour du natif (la VM a de toutes facons besoin de générer le code, et elle dispose du bytecode.)