anchor.diff:    "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))
  +           (type atomic-counter-num version))
   
     (progn
       ;; if we have memory barriers, we MUST use them
  
positive.code:         (multiple-value-bind (version1 value1) (%tvar-version-and-value var)
  
            (declare (type boolean free?)
                     (type fixnum version0 version1))
  
            (let1 fail (if (and free?
                                (eq value0 value1)
  
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))
  