(in-package :sb-heapdump) (defvar *hack-systems* "/opt/steeldump/lib/sbcl/hack-systems/") (defclass module-trampoline (asdf:system) ()) (defmethod asdf::traverse ((o asdf:load-op) (c module-trampoline)) (list (cons o c))) (defmethod asdf::traverse ((o asdf:compile-op) (c module-trampoline)) (error "compile-op on module-trampoline not implemented")) (defmethod asdf::perform ((o asdf:load-op) (c module-trampoline)) (let ((name (asdf:component-name c))) (setf (gethash name asdf::*defined-systems*) nil) (require name) (asdf:operate 'asdf:load-op name))) (defun system-heap-file-search (name) (setf name (coerce-name name)) (if (gethash name asdf::*defined-systems*) nil (let ((p (make-pathname :name name :type "asd" :defaults *hack-systems*))) (when (probe-file p) p)))) (push 'system-heap-file-search asdf:*system-definition-search-functions*)