From d5a8fd7a8f6df19db350e40cb4fd773a443e99c5 Mon Sep 17 00:00:00 2001
From: ram <ram>
Date: Tue, 29 May 1990 16:51:48 +0000
Subject: [PATCH] Init *BEFORE-GC-HOOKS*, *AFTER-GC-HOOKS* and
 %SP-INTERRUPTS-INHIBITED before we run top-level forms. Added
 WORLD-LOAD-INIT-FUNCTION so that we don't have to use an interpreted lambda
 in worldload (and swap in the entire interpreter on startup.)

---
 code/lispinit.lisp | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/code/lispinit.lisp b/code/lispinit.lisp
index 27d205332..05f2f4265 100644
--- a/code/lispinit.lisp
+++ b/code/lispinit.lisp
@@ -77,7 +77,8 @@
 
 ;;; Must be initialized in %INITIAL-FUNCTION before the DEFVAR runs...
 (proclaim '(special *gc-inhibit* *already-maybe-gcing*
-		    *need-to-collect-garbage* *gc-verbose*))
+		    *need-to-collect-garbage* *gc-verbose*
+		    *before-gc-hooks* *after-gc-hooks*))
 
 ;;;; Global ports:
  
@@ -760,6 +761,9 @@
   (setf *gc-inhibit* t)
   (setf *need-to-collect-garbage* nil)
   (setq *gc-verbose* t)
+  (setq *before-gc-hooks* ())
+  (setq *after-gc-hooks* ())
+  (setq %sp-interrupts-inhibited nil)
   (%primitive print "In initial-function, and running.")
 
   ;; Many top-level forms call INFO, (SETF INFO).
@@ -939,6 +943,16 @@
     (funcall init-function)))
 
 
+;;; WORLD-LOAD-INIT-FUNCTION  --  Interface
+;;;
+;;;    The init function we pass to SAVE-LISP in worldload.  We turn on GC and
+;;; thow to top level.
+;;;
+(defun world-load-init-function ()
+  (gc-on)
+  (abort))
+
+
 ;;; Quit gets us out, one way or another.
 
 (defun quit (&optional recklessly-p)
-- 
GitLab