diff --git a/code/load.lisp b/code/load.lisp
index 1503f5eb7a7d17ae97cbfaaa9217ab51dbc76167..c2c3e73952bed975c8d92c761bca0a9e033db9bf 100644
--- a/code/load.lisp
+++ b/code/load.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/load.lisp,v 1.57 1994/10/31 04:11:27 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/load.lisp,v 1.58 1994/11/04 06:02:31 ram Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1136,15 +1136,19 @@
   (makunbound '*initial-assembler-routines*)
   (makunbound '*initial-foreign-symbols*))
 
-(defun foreign-symbol-address (symbol)
+(defun foreign-symbol-address-aux (symbol)
   (multiple-value-bind
       (value found)
-      (gethash (vm:extern-alien-name symbol) *foreign-symbols* 0)
-    (unless found
-      (setq value (system:alternate-get-global-address symbol))
-      (when (zerop value)
-	    (error "Unknown foreign symbol: ~S" symbol)))
-    (int-sap value)))
+      (gethash symbol *foreign-symbols* 0)
+    (if found
+	value
+	(let ((value (system:alternate-get-global-address symbol)))
+	  (when (zerop value)
+	    (error "Unknown foreign symbol: ~S" symbol))
+	  value))))
+
+(defun foreign-symbol-address (symbol)
+  (int-sap (foreign-symbol-address-aux (vm:extern-alien-name symbol))))
 
 (define-fop (fop-foreign-fixup 147)
   (let* ((kind (pop-stack))
@@ -1152,12 +1156,9 @@
 	 (len (read-arg 1))
 	 (sym (make-string len)))
     (read-n-bytes *fasl-file* sym 0 len)
-    (multiple-value-bind
-	(value found)
-	(gethash sym *foreign-symbols* 0)
-      (unless found
-	(error "Unknown foreign symbol: ~S" sym))
-      (vm:fixup-code-object code-object (read-arg 4) value kind))
+    (vm:fixup-code-object code-object (read-arg 4)
+			  (foreign-symbol-address-aux sym)
+			  kind)
     code-object))
 
 (define-fop (fop-assembler-code 144)