dep.lisp (recompute-dep-value): Refactor the flag calculation.
[lisp] / dep.lisp
index ecd1628..15f6e0b 100644 (file)
--- a/dep.lisp
+++ b/dep.lisp
    We assume that DEP's dependencies are up-to-date already, and that DEP's
    +RECOMPUTING+ flag is set.  In the former case, DEP's dependents and
    listeners are notified, using PROPAGATE-TO-DEPENDENTS."
-  (let ((winning nil) (queued (logand (dep-%flags dep) +queued+)))
+  (let ((winning nil)
+       (new-flags (logior (logand (dep-%flags dep) +queued+)
+                          +value+ +deps+)))
     (flet ((update (value)
             (cond ((update-dep dep value)
-                   (setf (dep-flags dep) (logior +value+ +deps+ +changed+
-                                                 queued))
+                   (setf (dep-flags dep) (logior new-flags +changed+))
                    (propagate-to-dependents dep)
                    t)
                   (t
-                   (setf (dep-flags dep) (logior +value+ +deps+ queued))
+                   (setf (dep-flags dep) new-flags)
                    nil))))
       (unwind-protect
           (prog1 (update (new-dep-value dep)) (setf winning t))