diff --git a/operate.lisp b/operate.lisp index 7d9dbb92c2a99a0baeca08099e44e28a091defe4..af0a836ce9fb1c28baba0efc66adf7a6d77398c0 100644 --- a/operate.lisp +++ b/operate.lisp @@ -212,10 +212,9 @@ the implementation's REQUIRE rather than by internal ASDF mechanisms.")) ;; but must check whether we can use find-system and short-circuit cl:require. ;; Otherwise, calling cl:require could result in nasty reentrant calls between ;; cl:require and asdf:operate that could potentially blow up the stack. - (let* ((module (car arguments)) + (let* ((module (car arguments)) ;; NB: we already checked that it was not null (name (string-downcase module)) (system (find-system name nil))) - (assert module) (or system (let ((system (make-instance 'require-system :name name))) (register-system system) system)))) @@ -259,10 +258,11 @@ the implementation's REQUIRE rather than by internal ASDF mechanisms.")) ;; It is defined here to resolve what would otherwise be forward package references. (defun mark-component-preloaded (component) "Mark a component as preloaded." - ;; Recurse to children, so asdf/plan will hopefully be happy. - (map () 'mark-component-preloaded (component-children component)) - ;; Mark the timestamps of the common lisp-action operations as 0. - (let ((times (component-operation-times component))) - (dolist (o '(load-op compile-op prepare-op)) - (setf (gethash o times) 0))))) + (let ((component (find-component component nil :registered t))) + ;; Recurse to children, so asdf/plan will hopefully be happy. + (map () 'mark-component-preloaded (component-children component)) + ;; Mark the timestamps of the common lisp-action operations as 0. + (let ((times (component-operation-times component))) + (dolist (o '(load-op compile-op prepare-op)) + (setf (gethash o times) 0))))))