anchor.diff:        (push (%object-ref-t thread (+ mezzano.supervisor::+thread-mv-slots-start+ i)) vals))
       (subseq (reverse vals) 0 count)))
   
  +(defparameter *step-special-functions*
  +  '(cons cons-in-area
  +    mezzano.runtime::%allocate-object
  +    mezzano.supervisor::%call-on-wired-stack-without-interrupts))
  +
  +(defun single-step-wrapper (&rest args &closure call-me)
  +  (declare (dynamic-extent args))
  +  (unwind-protect
  +       (apply call-me args)
  +    (mezzano.supervisor::stop-current-thread)))
  +
   (defun safe-single-step-thread (thread)
     (check-type thread mezzano.supervisor:thread)
     (assert (eql (mezzano.supervisor:thread-state thread) :stopped))
  
positive.code: (in-package :sys.int)
  
  (defparameter *step-special-functions*
    '(cons cons-in-area mezzano.runtime::%allocate-object mezzano.supervisor:thread-yield))
  
  (defun fetch-thread-function-arguments (thread)
    (let ((count (mezzano.supervisor:thread-state-rcx-value thread))
  
negative.code:   (mezzano.supervisor::convert-thread-to-full-save thread)
    (let* ((rip (mezzano.supervisor:thread-state-rip thread))
           (fn (return-address-to-function rip)))
      (cond ((member fn *step-special-functions* :key #'fdefinition)
             (when (not (eql rip (%object-ref-unsigned-byte-64 fn +function-entry-point+)))
               (cerror "Step anyway"
                       "Cannot single-step function in the middle of special function ~S."
  