;;; -*- Mode:LISP; Package:USER; Readtable:CL; Base:10 -*- (defvar *system-files*) (defun system-files (&optional (system :system)) (setq *system-files* (mapcar #'(lambda (file) (send file :generic-pathname)) (si:system-source-files system si:*source-file-types*)))) (defun interesting-function-p (sym) (and sym (symbolp sym) (not (keywordp sym)) (functionp sym) (fboundp sym))) (defun definition-list (defs) (remove-if-not 'symbolp (remove-if-not 'consp (mapcan 'identity defs)) :key 'car)) (defun interesting-definitions (file &optional (interesting-p 'interesting-function-p) (deftypes '(defun))) (let ((defs (definition-list (get file :definitions)))) (setf (get file :interesting-definitions) (mapcar 'car (remove-if-not interesting-p (remove-if-not #'(lambda (def) (member (cdr def) deftypes)) defs) :key 'car))))) (defun interesting-references (file &optional (interesting-p 'interesting-function-p)) (setf (get file :interesting-references) (coerce (remove-if-not interesting-p (get file :foreign-objects-referenced)) 'list))) (defun microcode-references () (let (mic-refs) (dolist (file *system-files*) (let ((printed nil) (refs (or (get file :interesting-references) (interesting-references file)))) (dolist (ref refs) (when (and (typep (symbol-function ref) 'microcode-function) (or printed (format t "~&*** ~A:" file) (setq printed t)) (format t " ~A," ref))))))