Experimental.
"
(let ((class (canonicalize-class-designator class-designator)))
+ (unless class
+ (return-from who-specializes-directly nil))
(let ((result (collect-specializing-methods
#'(lambda (specl)
;; Does SPECL specialize on CLASS directly?
Experimental.
"
(let ((class (canonicalize-class-designator class-designator)))
+ (unless class
+ (return-from who-specializes-generally nil))
(let ((result (collect-specializing-methods
#'(lambda (specl)
;; Does SPECL specialize on CLASS or a subclass
result))))
(defun canonicalize-class-designator (class-designator)
- (etypecase class-designator
- (symbol (find-class class-designator))
- (class class-designator)))
+ (typecase class-designator
+ (symbol (find-class class-designator nil))
+ (class class-designator)
+ (t nil)))
(defun method-generic-function-name (method)
(sb-mop:generic-function-name (sb-mop:method-generic-function method)))
Indicates a \"large\" object subject to non-copying
promotion. (GENCGC and :SPACE :DYNAMIC only.)
+ :BOXED
+ Indicates that the object is allocated in a boxed region. Unboxed
+ allocation is used for eg. specialized arrays after they have survived one
+ collection. (GENCGC and :SPACE :DYNAMIC only.)
+
:PINNED
Indicates that the page(s) on which the object resides are kept live due
to conservative references. Note that object may reside on a pinned page
(list :space space
:generation (sb-alien:slot page 'sb-vm::gen)
:write-protected (logbitp 0 flags)
+ :boxed (logbitp 2 flags)
:pinned (logbitp 5 flags)
:large (logbitp 6 flags)))))
(list :space space))