dep.lisp (recompute-dep-value): Refactor the flag calculation.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 30 Jun 2018 20:38:43 +0000 (21:38 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 30 Jun 2018 21:52:21 +0000 (22:52 +0100)
Not sure why I wrote it like that.

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))