Well, I think this is right, not sure if it was like that for a reason, but this does cause rules to run for no reason after a certain precide series of events I won't bore you with. Look for one new line below:

(defmethod md-slot-value-assume (c raw-value propagation-code)
  (assert c)
  #+shhh (trc c "md-slot-value-assume entry" (c-state c))
  (without-c-dependency
      (let ((prior-state (c-value-state c))
            (prior-value (c-value c))
            (absorbed-value (c-absorb-value c raw-value)))

        (c-pulse-update c :slotv-assume)

        ; --- head off unchanged; this got moved earlier on 2006-06-10 ---
        (when (and (not (eq propagation-code :propagate))
                (find prior-state '(:valid :uncurrent))
                (c-no-news c absorbed-value prior-value))
(trc nil "(setf md-slot-value) > early no news" propagation-code prior-state prior-value absorbed-value)
          (count-it :nonews)
===new==> (setf (c-value-state c) :valid) ; in case it was :uncurrent
          (return-from md-slot-value-assume absorbed-value))

...etc unchanged...

Not committing to CVS cuz I don't want to break things, kinda too bust with Algebra to handle any fallout.
kt
_______________________________________________
cells-devel site list
cells-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/cells-devel

Reply via email to