0.7.12.17:
[sbcl.git] / src / code / cold-init.lisp
index 02bdfd9..e7429a2 100644 (file)
@@ -22,8 +22,8 @@
 ;;; anything whose name matches a magic character pattern is
 ;;; uninterned.
 ;;;
-;;; FIXME: should also go through globaldb (and perhaps other tables)
-;;; blowing away associated entries
+;;; FIXME: Are there other tables that need to have entries removed?
+;;; What about symbols of the form DEF!FOO?
 (defun !unintern-init-only-stuff ()
   (do ((any-changes? nil nil))
       (nil)
                         (string= name "*!" :end1 2 :end2 2)))
            (/show0 "uninterning cold-init-only symbol..")
            (/primitive-print name)
+           ;; FIXME: Is this (FIRST (LAST *INFO-ENVIRONMENT*)) really
+           ;; meant to be an idiom to use?  Is there a more obvious
+           ;; name for this? [e.g. (GLOBAL-ENVIRONMENT)?]
+           (do-info ((first (last *info-environment*))
+                           :name entry :class class :type type)
+             (when (eq entry symbol)
+               (clear-info class type entry)))
            (unintern symbol package)
            (setf any-changes? t)))))
     (unless any-changes?
 
   ;; FIXME: This list of modes should be defined in one place and
   ;; explicitly shared between here and REINIT.
-  ;;
-  ;; FIXME: In CMU CL, this is done "here" (i.e. in the analogous
-  ;; lispinit.lisp code) for every processor architecture. But Daniel
-  ;; Barlow's Alpha patches suppress it for Alpha. Why the difference?
-  #!+alpha
-  (set-floating-point-modes :traps '(:overflow
-                                    #!-x86 :underflow
-                                    :invalid
-                                    :divide-by-zero))
+
+  ;; Why was this marked #!+alpha?  CMUCL does it here on all architectures
+  (set-floating-point-modes :traps '(:overflow :invalid :divide-by-zero))
 
   (show-and-call !class-finalize)
 
@@ -278,18 +279,12 @@ instead (which is another name for the same thing)."))
       (signal-cold-init-or-reinit)
       (gc-reinit)
       (setf (sb!alien:extern-alien "internal_errors_enabled" boolean) t)
-      (set-floating-point-modes :traps
-                               '(:overflow
-                                 :invalid
-                                 :divide-by-zero
-                                 ;; PRINT seems not to like x86 NPX
-                                 ;; denormal floats like
-                                 ;; LEAST-NEGATIVE-SINGLE-FLOAT, so
-                                 ;; the :UNDERFLOW exceptions are
-                                 ;; disabled by default. Joe User can
-                                 ;; explicitly enable them if
-                                 ;; desired.
-                                 #!-x86 :underflow))
+      ;; PRINT seems not to like x86 NPX denormal floats like
+      ;; LEAST-NEGATIVE-SINGLE-FLOAT, so the :UNDERFLOW exceptions are
+      ;; disabled by default. Joe User can explicitly enable them if
+      ;; desired.
+      (set-floating-point-modes :traps '(:overflow :invalid :divide-by-zero))
+
       ;; Clear pseudo atomic in case this core wasn't compiled with
       ;; support.
       ;;