diff --git a/tools/worldload.lisp b/tools/worldload.lisp
index 20d29147cfac6f8213c246f1aeb4c313766145cc..bd6cdb2eba5abce811d42a077a6ef863d35c671f 100644
--- a/tools/worldload.lisp
+++ b/tools/worldload.lisp
@@ -6,7 +6,7 @@
 ;;; If you want to use this code or any part of CMU Common Lisp, please contact
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldload.lisp,v 1.74 1994/02/12 14:24:24 ram Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldload.lisp,v 1.75 1994/02/14 13:16:30 ram Exp $
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -107,50 +107,25 @@
   (maybe-byte-load "target:code/filesys" nil)
   (maybe-byte-load "target:code/macros" nil))
 
-(defvar *old-ie*)
-
-(setq *old-ie* (car *info-environment*))
-(setq *info-environment*
-      (list* (make-info-environment)
-	     (compact-info-environment (first *info-environment*)
-				       :name "Kernel")
-	     (rest *info-environment*)))
-(lisp::shrink-vector (c::volatile-info-env-table *old-ie*) 0)
-(setq *old-ie* nil)
-
 (purify :root-structures
-	`(lisp::%top-level extensions:save-lisp ,lisp::fop-codes))
+	`(lisp::%top-level extensions:save-lisp ,lisp::fop-codes)
+	:environment-name "Kernel")
 
 ;;; Load the compiler.
 #-(or no-compiler runtime)
 (progn
   (maybe-byte-load "c:loadcom.lisp")
-  (setq *old-ie* (car *info-environment*))
-  (setq *info-environment*
-	(list* (make-info-environment)
-	       (compact-info-environment (first *info-environment*)
-					 :name "Compiler")
-	       (rest *info-environment*)))
-  (lisp::shrink-vector (c::volatile-info-env-table *old-ie*) 0)
+  (purify :root-structures '(compile-file)
+	  :environment-name "Compiler")
 
   (maybe-byte-load "c:loadbackend.lisp")
   ;; If we want a small core, blow away the meta-compile time VOP info.
   #+small (setf (c::backend-parsed-vops c:*backend*)
 		(make-hash-table :test #'eq))
 
-  (setq *old-ie* (car *info-environment*))
-  (setq *info-environment*
-	(list* (make-info-environment)
-	       (compact-info-environment
-		(first *info-environment*)
-		:name
-		(concatenate 'string (c:backend-name c:*backend*) " backend"))
-	       (rest *info-environment*)))
-
-  (lisp::shrink-vector (c::volatile-info-env-table *old-ie*) 0)
-  (setq *old-ie* nil))
-
-(purify :root-structures '(compile-file)))
+  (purify :root-structures (list c:*backend*)
+	  :environment-name (concatenate 'string (c:backend-name c:*backend*)
+					 " backend")))
 
 ;;; CLX.
 ;;;
@@ -184,16 +159,6 @@
 (setf (search-list "modules:") '("./"))
 (setf (search-list "target:") *target-sl*)
 
-;; set up the initial info environment.
-(setq *old-ie* (car *info-environment*))
-(setq *info-environment*
-      (list* (make-info-environment :name "Working")
-	     (compact-info-environment (first *info-environment*)
-				       :name "Auxiliary")
-	     (rest *info-environment*)))
-(lisp::shrink-vector (c::volatile-info-env-table *old-ie*) 0)
-(setq *old-ie* nil)
-
 ;;; Okay, build the thing!
 ;;;
 (progn
@@ -217,6 +182,9 @@
   #-gengc (setf *need-to-collect-garbage* nil)
   #-gengc (gc-on)
   ;;
-  ;; Save the lisp.
-  (save-lisp "lisp.core" :root-structures
-	     `(ed #-(or runtime no-hemlock) ,hi::*global-command-table*)))
+  ;; Save the lisp.  If RUNTIME, there is nothing new to purify, so don't.
+  (save-lisp "lisp.core"
+	     :root-structures
+	     #-(or runtime no-hemlock) `(ed ,hi::*global-command-table*)
+	     #+(or runtime no-hemlock) ()
+	     :purify #+runtime nil #-runtime t))