diff --git a/compiler/generic/core.lisp b/compiler/generic/core.lisp
index 78814008456390cc2d033212b8b07e9785909df9..87af4b5d40ea9876ef8a1808f59fa594554fb414 100644
--- a/compiler/generic/core.lisp
+++ b/compiler/generic/core.lisp
@@ -63,7 +63,7 @@
 ;;;
 #+new-compiler
 (defun core-function-or-lose (fun object)
-  (declare (type clambda fun) (type core-object object))
+  (declare (type functional fun) (type core-object object))
   (let ((res (gethash (leaf-info fun) (core-object-entry-table object))))
     (assert res () "Unresolved forward function reference?")
     res))
@@ -158,11 +158,11 @@
 ;;; CORE-CALL-TOP-LEVEL-LAMBDA  --  Interface
 ;;;
 ;;;    Call the top-level lambda function dumped for Entry, returning the
-;;; values.
+;;; values.  Entry may be a 
 ;;;
 #+new-compiler
 (defun core-call-top-level-lambda (entry object)
-  (declare (type clambda entry) (type core-object object))
+  (declare (type functional entry) (type core-object object))
   (funcall (core-function-or-lose entry object)))
 
 
@@ -172,9 +172,11 @@
 ;;; SOURCE-INFO list.
 ;;;
 #+new-compiler
-(defun fix-core-source-info (info object)
+(defun fix-core-source-info (info object source-info)
   (declare (type source-info info) (type core-object object))
   (let ((res (debug-source-for-info info)))
+    (dolist (sinfo res)
+      (setf (debug-source-info sinfo) source-info))
     (dolist (info (core-object-debug-info object))
       (setf (compiled-debug-info-source info) res))
     (setf (core-object-debug-info object) ()))