Changeset 6616


Ignore:
Timestamp:
May 28, 2007, 12:41:48 AM (18 years ago)
Author:
Gary Byers
Message:

save-local-symbols: save "addresses" for special vars, too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ide-1.0/ccl/compiler/X86/x862.lisp

    r6541 r6616  
    652652                                   (%rplacd symlist ptrs)))
    653653        (flet ((label-address (note start-p sym)
    654                  (let* ((label (vinsn-note-label note))
    655                         (lap-label (if label (vinsn-label-info label))))
    656                    (if lap-label
    657                      (x86-lap-label-address lap-label)
    658                      (error "Missing or bad ~s label: ~s"
    659                        (if start-p 'start 'end) sym)))))
     654                 (-
     655                  (let* ((label (vinsn-note-label note))
     656                         (lap-label (if label (vinsn-label-info label))))
     657                    (if lap-label
     658                      (x86-lap-label-address lap-label)
     659                      (error "Missing or bad ~s label: ~s"
     660                             (if start-p 'start 'end) sym)))
     661                  x8664::fulltag-function)))
    660662          (destructuring-bind (var sym startlab endlab) info
    661663            (let* ((ea (var-ea var))
     
    38733875          (setq val (x862-dynamic-extent-form seg curstack val))))
    38743876      (if (%ilogbitp $vbitspecial bits)
    3875         (x862-dbind seg val sym)
     3877        (progn
     3878          (x862-dbind seg val sym)
     3879          (x862-set-var-ea seg var (x862-vloc-ea (- *x862-vstack* *x862-target-node-size*))))
    38763880        (let ((puntval nil))
    38773881          (flet ((x862-puntable-binding-p (var initform)
     
    39403944      (progn
    39413945        (x862-dbind seg addr (var-name var))
     3946        (x862-set-var-ea seg var (x862-vloc-ea (- *x862-vstack* *x862-target-node-size*)))
    39423947        t)
    39433948      (progn
     
    39753980(defun x862-close-var (seg var)
    39763981  (let ((bits (nx-var-bits var)))
    3977     (when (and *x862-record-symbols* 
    3978          (%izerop (%ilogand (%ilogior (ash -1 $vbitspecial)
    3979                                       (%ilsl $vbitpunted 1)) bits)))
     3982    (when (and *x862-record-symbols*
     3983               (or (logbitp $vbitspecial bits)
     3984                   (not (logbitp $vbitpunted bits))))
    39803985      (let ((endnote (%car (%cdddr (assq var *x862-recorded-symbols*)))))
    3981         (unless endnote (error "x862-close-var ?"))
     3986        (unless endnote (error "x862-close-var for ~s" (var-name var)))
    39823987        (setf (vinsn-note-class endnote) :end-variable-scope)
    39833988        (append-dll-node (vinsn-note-label endnote) seg)))))
Note: See TracChangeset for help on using the changeset viewer.