Index: /branches/ide-1.0/ccl/compiler/X86/x862.lisp
===================================================================
--- /branches/ide-1.0/ccl/compiler/X86/x862.lisp	(revision 6615)
+++ /branches/ide-1.0/ccl/compiler/X86/x862.lisp	(revision 6616)
@@ -652,10 +652,12 @@
                                    (%rplacd symlist ptrs)))
         (flet ((label-address (note start-p sym)
-                 (let* ((label (vinsn-note-label note))
-                        (lap-label (if label (vinsn-label-info label))))
-                   (if lap-label
-                     (x86-lap-label-address lap-label)
-                     (error "Missing or bad ~s label: ~s" 
-                       (if start-p 'start 'end) sym)))))
+                 (-
+                  (let* ((label (vinsn-note-label note))
+                         (lap-label (if label (vinsn-label-info label))))
+                    (if lap-label
+                      (x86-lap-label-address lap-label)
+                      (error "Missing or bad ~s label: ~s" 
+                             (if start-p 'start 'end) sym)))
+                  x8664::fulltag-function)))
           (destructuring-bind (var sym startlab endlab) info
             (let* ((ea (var-ea var))
@@ -3873,5 +3875,7 @@
           (setq val (x862-dynamic-extent-form seg curstack val))))
       (if (%ilogbitp $vbitspecial bits)
-        (x862-dbind seg val sym)
+        (progn
+          (x862-dbind seg val sym)
+          (x862-set-var-ea seg var (x862-vloc-ea (- *x862-vstack* *x862-target-node-size*))))
         (let ((puntval nil))
           (flet ((x862-puntable-binding-p (var initform)
@@ -3940,4 +3944,5 @@
       (progn
         (x862-dbind seg addr (var-name var))
+        (x862-set-var-ea seg var (x862-vloc-ea (- *x862-vstack* *x862-target-node-size*)))
         t)
       (progn
@@ -3975,9 +3980,9 @@
 (defun x862-close-var (seg var)
   (let ((bits (nx-var-bits var)))
-    (when (and *x862-record-symbols* 
-         (%izerop (%ilogand (%ilogior (ash -1 $vbitspecial)
-                                      (%ilsl $vbitpunted 1)) bits)))
+    (when (and *x862-record-symbols*
+               (or (logbitp $vbitspecial bits)
+                   (not (logbitp $vbitpunted bits))))
       (let ((endnote (%car (%cdddr (assq var *x862-recorded-symbols*)))))
-        (unless endnote (error "x862-close-var ?"))
+        (unless endnote (error "x862-close-var for ~s" (var-name var)))
         (setf (vinsn-note-class endnote) :end-variable-scope)
         (append-dll-node (vinsn-note-label endnote) seg)))))
