anchor.diff:        (arity-error vm primitive-arity num-args))
       (multiple-value-bind(result what-next)
           (if is-required-primitive
  -            (apply primitive (reverse arg-values))
  +            (apply primitive arg-values)
               (handler-case
  -                (apply primitive (reverse arg-values))
  +                (apply primitive arg-values)
                 (error (err)
                   (setf (vm-user-defined-primitive-error vm) err)
                   (values :null :nap-and-retry-on-wake-up))))
  
positive.code:            (environment (vm-current-environment vm)))
        (loop
           for i from (1- args) downto 0
           do (set-in-environment environment
                                  0 i
                                  (pop stack)))
        (if return-address
            (setf (vm-stack vm) (cons return-address stack))
            (setf (vm-stack vm) stack))))
  
negative.code:               (incf (vm-program-counter vm))
                (apply-return-address vm (pop (vm-stack vm))))
            (push result (vm-stack vm)))))))
  
  (defun set-in-top-frame (environment var-index value)
    (declare (optimize speed))
    (let ((vars (env-frame-vars (first environment))))
      (declare (type (simple-array t *) vars))
      (setf (second (aref vars var-index))
            value)))
  
  (defun set-in-environment (environment frame-number var-index value)
    (setf (second (aref (env-frame-vars (nth frame-number environment))
  