anchor.diff:  
   (define-reg-use (call attrs . args) general-register-count)
   
  -(define (varrec-value varrec)
  -  (varrec-attr (or (varrec-attr varrec 'origin) varrec) 'value))
  -
   (define-codegen (call attrs func . args)
     (let* ((new-frame-base in-frame-base))
       (dolist (arg (reverse args))
  
positive.code:     (emit-mov out (immediate (fixnum-representation (length args)))
                %nargs)
  
      (let* ((func-value (and (eq? 'ref (first func))
                              (varrec-value (second func)))))
        (if func-value
            (emit-call out (form-attr func-value 'label))
            (emit-indirect-call out)))
  
      (emit-restore-%func out)
  
negative.code:       (varrec-attr-set! varrec 'mode mode)
        (set! index (1+ index)))))
  
  (define-codegen-sections (begin varrecs . body)
    (dolist (varrec varrecs) (varrec-attr-set! varrec 'lambda-label false))
    (codegen-sections-forms body out))
  
  (define-codegen-sections (lambda attrs body)
    (let* ((label (gen-label))
           (self-varrec (attr-ref attrs 'self)))
      (form-attr-set! form 'label label)
      (when (and self-varrec (not (varrec-written? self-varrec)))
        (varrec-attr-set! (varrec-attr self-varrec 'origin) 'lambda-label label))
      (dolist (varrec (attr-ref attrs 'params))
        (varrec-attr-set! varrec 'lambda-label false))
  
      (codegen-sections body out)
  
      (emit out ".text")
  