Index: /trunk/source/level-1/l1-clos.lisp
===================================================================
--- /trunk/source/level-1/l1-clos.lisp	(revision 14861)
+++ /trunk/source/level-1/l1-clos.lisp	(revision 14862)
@@ -307,6 +307,11 @@
         do (etypecase obj
              (standard-generic-function
-	      (clear-gf-dispatch-table (%gf-dispatch-table obj))
-	      (compute-dcode obj)))))
+              (let* ((dt (%gf-dispatch-table obj))
+                     (argnum (%gf-dispatch-table-argnum dt)))
+                (when (< argnum 0)
+                  (setf (%gf-dispatch-table-argnum dt) (lognot argnum)
+                        (%gf-dcode obj) (%gf-dispatch-table-gf dt)
+                        (%gf-dispatch-table-gf dt) obj)
+                  (clear-gf-dispatch-table dt)))))))
 
 (defun update-slots (class eslotds)
