anchor.diff:          `(sys.lap-x86:mov64 :r8 (,+binding-stack-gs-offset+)))
     (setf *r8-value* (list (gensym))))
   
  -(defbuiltin sys.int::%%block-info-binding-stack-pointer (block-info) (nil)
  +(defbuiltin sys.int::%%block-info-binding-stack-pointer (block-info) ()
     ;; Read the saved binding stack pointer from a block-info.
     (load-in-r8 block-info t)
     (smash-r8)
     (emit `(sys.lap-x86:mov64 :r8 (:r8 8)))
     (setf *r8-value* (list (gensym))))
   
  -(defbuiltin sys.int::%%tagbody-info-binding-stack-pointer (tagbody-info) (nil)
  +(defbuiltin sys.int::%%tagbody-info-binding-stack-pointer (tagbody-info) ()
     ;; Read the saved binding stack pointer from a tagbody-info.
     (load-in-r8 tagbody-info t)
     (smash-r8)
  
positive.code:         `(sys.lap-x86:add64 (,+binding-stack-gs-offset+) 16))
    ''nil)
  
  (defbuiltin sys.int::%%disestablish-unwind-protect () ()
    ;; Top entry in the binding stack is an unwind-protect entry.
    ;; It's a function and environment object.
    ;; Pop the stack & call the function with the environment object.
  
negative.code: 
  (defparameter *builtins* (make-hash-table))
  
  (defmacro defbuiltin (name lambda-list (&optional (emit-function t) suppress-binding-stack-check) &body body)
    `(progn (setf (gethash (sys.int::function-symbol ',name) *builtins*)
  		(list ',lambda-list
  		      (lambda ,lambda-list
  			(declare (system:lambda-name ,name)
                                   ,@(when suppress-binding-stack-check
                                       '((sys.int::suppress-ssp-checking))))
  			,@body)
                        ',emit-function
                        ',name
                        ',suppress-binding-stack-check))
  	  ',name))
  
  (defmacro define-reader (name type tag slot)
  