1.0.32.12: Fix slot-value on specialized parameters in SVUC methods
[sbcl.git] / src / compiler / xref.lisp
index ac1dad8..4bf2fd0 100644 (file)
                (record-xref :calls name context node nil)))))
          ;; Inlined global function
          (clambda
-          (when (functional-inlinep leaf)
-            (let ((name (leaf-debug-name leaf)))
-              ;; FIXME: we should store the original var into the
-              ;; functional when creating inlined-functionals, so that
-              ;; we could just check whether it was a global-var,
-              ;; rather then needing to guess based on the debug-name.
-              (when (or (symbolp name)
-                        ;; Any non-SETF non-symbol names will
-                        ;; currently be either non-functions or
-                        ;; internals.
-                        (and (consp name)
-                             (equal (car name) 'setf)))
-                ;; TODO: a WHO-INLINES xref-kind could be useful
-                (record-xref :calls name context node nil)))))
+          (let ((inline-var (functional-inline-expanded leaf)))
+            (when (global-var-p inline-var)
+              ;; TODO: a WHO-INLINES xref-kind could be useful
+              (record-xref :calls (leaf-debug-name inline-var) context node nil))))
          ;; Reading a constant
          (constant
           (record-xref :references (ref-%source-name node) context node nil)))))
          (member (symbol-package what)
                  (load-time-value (list* (find-package "COMMON-LISP")
                                          (find-package "KEYWORD")
+                                         #+sb-xc-host (find-package "SB-XC")
                                          (remove-if-not
                                           (lambda (package)
                                             (= (mismatch "SB!"
                                                          (package-name package))
                                                3))
-                                          (list-all-packages)))))))
+                                          (list-all-packages)))))
+         #+sb-xc-host ; again, special case like in genesis and dump
+         (multiple-value-bind (cl-symbol cl-status)
+             (find-symbol (symbol-name what) sb!int:*cl-package*)
+           (and (eq what cl-symbol) (eq cl-status :external)))))
     (t t)))
 
 (defun record-xref (kind what context node path)