benou a écrit :
je me suis toujours étonné qu'il faille passer par une exception pour pouvoir afficher la stackTrace. C'est quand même bizarer que ca ait pas été disponible avant
|
Non, c'est un bordel monstre, mais c'est obligatoire pour les exceptions.
Il faut :
1) retrouver d'ou vient tout le code qui a été exécuté (donc en cas d'inlining, il faut poser des marqueurs, aller chercher les méthodes)
2) instancier tous les objets représentant la pile, chercher les arguments qui auraient dû être passés sur la pile (mais qui ne l'ont pas forcément été pour cause d'optimisation)
bref, c'est un vrai bordel pour l'optimiseur.
En plus en dehors des exceptions, il ne doit pas y avoir beaucoup d'utilisations à ça (en dehors de trucs très très dynamiques et inoptimisables : sérialisation de tâches dans le langage, manipulation du flux d'exécution, continuations).
---------------
trainoo.com, c'est fini