anchor.diff:  
   
   
  -(declaim (ftype (function (tvar) (values fixnum t)) %tvar-version-and-value)
  +(declaim (ftype (function (tvar) (values atomic-counter-num t)) %tvar-version-and-value)
            (inline
              %tvar-version-and-value))
   
  
positive.code:   "Set the VALUE and VERSION of VAR. If lock is a bit inside TVAR version,
  also set it (which may unlock VAR!). Return VALUE."
    (declare (type tvar var)
             (type fixnum version))
  
    (progn
      ;; if we have memory barriers, we MUST use them
  
negative.code:   (multiple-value-bind (version0+lock value) (%tvar-version-and-value var)
      (let1 version1+lock (progn (mem-read-barrier) (tvar-version var))
        
        (declare (type atomic-counter-num version0+lock version1+lock))
  
        (let* ((version1 (logand version1+lock (lognot 1)))
               (lock1    (logand version1+lock 1))
  