* new feature: SB-INTROSPECT:WHO-SPECIALIZES-GENERALLY to get a list of
definitions for methods specializing on the passed class itself, or on
subclasses of it.
+ * new build flag: :sb-xref-for-internals; SBCL will collect xref information
+ about itself during the build (e.g. for M-? in Slime), if this flag is
+ enabled in customize-target-features.lisp. This will increase the core
+ size by about 5-6mb, though, so it's mostly interesting to SBCL
+ developers.
* fixes and improvements related to Unicode and external formats:
** the Unicode character database has been upgraded to the
Unicode 5.2 standard, giving names and properties to a number of new
;; increases core size by about 100kB.
:sb-source-locations
+ ;; Record xref data for SBCL internals. This can be rather useful for
+ ;; people who want to develop on SBCL itself because it'll make M-?
+ ;; (slime-edit-uses) work which lists call/expansion/etc. sites.
+ ;; It'll increase the core size by major 5-6mB, though.
+ ; :sb-xref-for-internals
+
;; This affects the definition of a lot of things in bignum.lisp. It
;; doesn't seem to be documented anywhere what systems it might apply
;; to. It doesn't seem to be needed for X86 systems anyway.
nil)))))))
(defun internal-name-p (what)
- ;; Don't store XREF information for internals. We define as internal
- ;; anything named only by symbols from either implementation
- ;; packages, COMMON-LISP or KEYWORD. The last one is useful for
- ;; example when dealing with ctors.
+ ;; Unless we're building with SB-XREF-FOR-INTERNALS, don't store
+ ;; XREF information for internals. We define anything with a symbol
+ ;; from either an implementation package or from COMMON-LISP as
+ ;; internal
(typecase what
(list
(every #'internal-name-p what))
(symbol
+ #!+sb-xref-for-internals
+ (eq '.anonymous. what)
+ #!-sb-xref-for-internals
(or (eq '.anonymous. what)
(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)))))
- #+sb-xc-host ; again, special case like in genesis and dump
+ (load-time-value
+ (list* (find-package "COMMON-LISP")
+ #+sb-xc-host (find-package "SB-XC")
+ (remove-if-not
+ (lambda (package)
+ (= (mismatch "SB!"
+ (package-name package))
+ 3))
+ (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)))))