Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Commit [69e6ae] Maximize Restore History

Use new MAP-RESTARTS in FIND-RESTART, COMPUTE-RESTARTS; fix FIND-RESTART

* Both FIND-RESTART and COMPUTE-RESTARTS traverse, filter and select
active restarts, potentially for a particular condition and
potentially calling restart test functions. This common behavior has
been factored into the new function MAP-RESTARTS.

* Remove *CONDITION-RESTARTS*; use new slot ASSOCIATED-CONDITIONS in
RESTART structure instead.

* As stated in bug 774410, when given a RESTART instance, FIND-RESTART
did not test whether the restart was still active and whether the
restart had been associated to a different condition in the
meantime. This behavior has been changed by calling MAP-RESTARTS which
checks activity and association to conditions (sadly, making

(find-restart RESTART-INSTANCE CONDITION-OBJECT)

a bit slower than before).

* INVOKE-RESTART is also affected by the changes for bug
774410. However, it does not respect restart test functions when
called with a RESTART instance (This is underspecified in CLHS and
other implementations behave in various ways. However, behaving
differently would make some restarts un-invokable).

* As suggested in bug 769615, (find-restart SYMBOL ...) now calls
MAP-RESTARTS instead of COMPUTE-RESTARTS, consing less and executing
faster in many cases.

* New (find-restart :recheck-conditions-and-tests :bug-774410) test from
Jean-Philippe Paradis from original bug report in
tests/condition.impure.lisp checks the new behavior.

Fixes lp#769615, lp#774410

Jan Moringen Jan Moringen 2013-09-20

Christophe Rhodes Christophe Rhodes 2013-10-22

changed src/code/defboot.lisp
changed src/code/target-error.lisp
changed src/code/target-thread.lisp
changed tests/condition.impure.lisp
changed NEWS
changed package-data-list.lisp-expr
src/code/defboot.lisp Diff Switch to side-by-side view
Loading...
src/code/target-error.lisp Diff Switch to side-by-side view
Loading...
src/code/target-thread.lisp Diff Switch to side-by-side view
Loading...
tests/condition.impure.lisp Diff Switch to side-by-side view
Loading...
NEWS Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...