The archive includes the results of simple timing experiments which show the performance improvement predicted by Nikodemus for the (FIND-RESTART SYMBOL) case. However, the results also show that fixing https://bugs.launchpad.net/sbcl/+bug/774410 (at least when implemented like I did) incurs a performance penalty in the (FIND-RESTART RESTART-INSTANCE) case.
The patch contains questions for the person reviewing it. Of particular importance (I think) is the question if/how INVOKE-RESTART, when given a RESTART instance, should check whether that restart is still active. ECL, CLISP, CCL and SBCL master behave differently with respect to this question and CLHS for INVOKE-RESTART is not very helpful.
The attached patch adds MAP-RESTARTS and uses it in FIND-RESTART and COMPUTE-RESTARTS. It also fixes https:/ /bugs.launchpad .net/sbcl/ +bug/774410.
The archive includes the results of simple timing experiments which show the performance improvement predicted by Nikodemus for the (FIND-RESTART SYMBOL) case. However, the results also show that fixing https:/ /bugs.launchpad .net/sbcl/ +bug/774410 (at least when implemented like I did) incurs a performance penalty in the (FIND-RESTART RESTART-INSTANCE) case.
The patch contains questions for the person reviewing it. Of particular importance (I think) is the question if/how INVOKE-RESTART, when given a RESTART instance, should check whether that restart is still active. ECL, CLISP, CCL and SBCL master behave differently with respect to this question and CLHS for INVOKE-RESTART is not very helpful.