diff --git a/Makefile b/Makefile
index 9328b37b44f4c2f8bfcad4e1750bdf1eecb6b8b0..c3516029ffc03968facb5abd373d7f3bd979860b 100644
--- a/Makefile
+++ b/Makefile
@@ -7,13 +7,12 @@ sourceDirectory := $(shell pwd)
 ifdef ASDF_TEST_LISPS
 lisps ?= ${ASDF_TEST_LISPS}
 else
-lisps ?= ccl clisp sbcl ecl ecl-bytecodes cmucl abcl scl allegro lispworks
+lisps ?= ccl clisp sbcl ecl ecl-bytecodes cmucl abcl scl allegro lispworks allegromodern
 endif
 
 ## MINOR FAIL: xcl (logical pathname issue in asdf-pathname-test.script)
-## OCCASIONALLY TESTED BY NOT ME: allegromodern (not in my free demo version)
 ## MAJOR FAIL: gclcvs -- COMPILER BUG! Upstream fixed it, but upstream fails to compile.
-## NOT SUPPORTED BY OUR TESTS: cormancl genera mkcl rmcl. Manually tested once in a while.
+## NOT SUPPORTED BY OUR TESTS: cormancl genera lispworks-personal-edition mkcl rmcl. Manually tested once in a while.
 
 lisp ?= sbcl
 
@@ -82,6 +81,10 @@ mrproper: clean
 	rm -rf .pc/ build-stamp debian/patches/ debian/debhelper.log debian/cl-asdf/ # debian crap
 
 test-upgrade:
+	# 1.37 is the last release by Daniel Barlow
+	# 1.97 is the last release before Gary King takes over
+	# 1.369 is the last release by Gary King
+	# 2.000 to 2.019 and 2.20 to 2.27 and beyond are Faré's "stable" releases
 	fasl=fasl ; \
 	use_ccl () { li="${CCL} --no-init --quiet" ; ev="--eval" ; } ; \
 	use_clisp () { li="${CLISP} -norc -ansi --quiet --quiet" ; ev="-x" ; } ; \
diff --git a/asdf.asd b/asdf.asd
index 47c218dbdc7c0158d166885ba7a15acc739055a5..44b25252b5380b8c616bb72c8c4671f31bea9bd8 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -14,7 +14,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.26.40" ;; to be automatically updated by bin/bump-revision
+  :version "2.26.41" ;; to be automatically updated by bin/bump-revision
   :depends-on ()
   :components
   ((:file "asdf")))
diff --git a/asdf.lisp b/asdf.lisp
index 4fb1eda42c714193e5e559e19f48ce0044da692f..32403042e9324a25307c7cff346c78701a0e87a3 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -1,5 +1,5 @@
 ;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
-;;; This is ASDF 2.26.40: Another System Definition Facility.
+;;; This is ASDF 2.26.41: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
@@ -118,7 +118,7 @@
          ;; "2.345.6" would be a development version in the official upstream
          ;; "2.345.0.7" would be your seventh local modification of official release 2.345
          ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
-         (asdf-version "2.26.40")
+         (asdf-version "2.26.41")
          (existing-asdf (find-class 'component nil))
          (existing-version *asdf-version*)
          (already-there (equal asdf-version existing-version)))
@@ -1219,24 +1219,28 @@ Returns two values:
 
 ;;;; -------------------------------------------------------------------------
 ;;; Methods in case of hot-upgrade. See https://bugs.launchpad.net/asdf/+bug/485687
-(when *upgraded-p*
-  ;; override previous definition from 2.018 to 2.26, not needed
-  ;; since we've stopped trying to recycle previously-installed systems.
-  (eval '(defmethod reinitialize-instance :after ((obj component) &rest initargs)
-          (declare (ignorable obj initargs)) (values)))
-  (when (find-class 'module nil)
-    (eval '(defmethod update-instance-for-redefined-class :after
-            ((m module) added deleted plist &key)
-            (declare (ignorable m added deleted plist))
-            (when (and (member 'children added) (member 'components deleted))
-              (setf (slot-value m 'children) (getf plist 'components))
-              (compute-children-by-name m))
-            (when (typep m 'system)
-              (when (member 'source-file added)
-                (%set-system-source-file
-                 (probe-asd (component-name m) (component-pathname m)) m))
-              (when (equal (component-name m) "asdf")
-                (setf (component-version m) *asdf-version*)))))))
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (when *upgraded-p*
+    ;; override previous definition from 2.018 to 2.26, not needed
+    ;; since we've stopped trying to recycle previously-installed systems.
+    (when (find-class 'component nil)
+      (eval '(defmethod reinitialize-instance :after ((c component) &rest initargs &key)
+              (declare (ignorable c initargs)) (values))))
+    (when (find-class 'module nil)
+      (eval '(defmethod reinitialize-instance :after ((m module) &rest initargs &key)
+              (declare (ignorable m initargs)) (values)))
+      (eval '(defmethod update-instance-for-redefined-class :after
+              ((m module) added deleted plist &key)
+              (declare (ignorable m added deleted plist))
+              (when (and (member 'children added) (member 'components deleted))
+                (setf (slot-value m 'children) (getf plist 'components))
+                (compute-children-by-name m))
+              (when (typep m 'system)
+                (when (member 'source-file added)
+                  (%set-system-source-file
+                   (probe-asd (component-name m) (component-pathname m)) m))
+                (when (equal (component-name m) "asdf")
+                  (setf (component-version m) *asdf-version*))))))))
 
 ;;;; -------------------------------------------------------------------------
 ;;; Classes, Conditions