(belated 0.6.11.2 checkin notes):
[sbcl.git] / src / compiler / generic / genesis.lisp
index 259c781..582bb3d 100644 (file)
@@ -6,13 +6,20 @@
 ;;;; As explained by Rob MacLachlan on the CMU CL mailing list Wed, 06
 ;;;; Jan 1999 11:05:02 -0500, this cold load generator more or less
 ;;;; fakes up static function linking. I.e. it makes sure that all the
-;;;; functions in the fasl files it reads are bound to the
+;;;; DEFUN-defined functions in the fasl files it reads are bound to the
 ;;;; corresponding symbols before execution starts. It doesn't do
 ;;;; anything to initialize variable values; instead it just arranges
 ;;;; for !COLD-INIT to be called at cold load time. !COLD-INIT is
 ;;;; responsible for explicitly initializing anything which has to be
 ;;;; initialized early before it transfers control to the ordinary
 ;;;; top-level forms.
+;;;;
+;;;; (In CMU CL, and in SBCL as of 0.6.9 anyway, functions not defined
+;;;; by DEFUN aren't set up specially by GENESIS. In particular,
+;;;; structure slot accessors are not set up. Slot accessors are
+;;;; available at cold init time because they're usually compiled
+;;;; inline. They're not available as out-of-line functions until the
+;;;; toplevel forms installing them have run.)
 
 ;;;; This software is part of the SBCL system. See the README file for
 ;;;; more information.
 
 (defvar *normal-fop-functions*)
 
-;;; This is like DEFINE-FOP which defines fops for warm load, but unlike
-;;; DEFINE-FOP, this version
-;;;   (1) looks up the code for this name (created by a previous DEFINE-FOP)
-;;;       instead of creating a code, and
-;;;   (2) stores its definition in the *COLD-FOP-FUNCTIONS* vector, instead
-;;;       of storing in the *FOP-FUNCTIONS* vector.
+;;; Cause a fop to have a special definition for cold load.
+;;; 
+;;; This is similar to DEFINE-FOP, but unlike DEFINE-FOP, this version
+;;;   (1) looks up the code for this name (created by a previous
+;;        DEFINE-FOP) instead of creating a code, and
+;;;   (2) stores its definition in the *COLD-FOP-FUNCTIONS* vector,
+;;;       instead of storing in the *FOP-FUNCTIONS* vector.
 (defmacro define-cold-fop ((name &optional (pushp t)) &rest forms)
   (check-type pushp (member nil t :nope))
   (let ((code (get name 'fop-code))
-       (fname (concat-pnames 'cold- name)))
+       (fname (symbolicate "COLD-" name)))
     (unless code
       (error "~S is not a defined FOP." name))
     `(progn
   `(define-cold-fop (,name)
      (error "The fop ~S is not supported in cold load." ',name)))
 
-;;; COLD-LOAD loads stuff into the core image being built by calling FASLOAD
-;;; with the fop function table rebound to a table of cold loading functions.
+;;; COLD-LOAD loads stuff into the core image being built by calling
+;;; FASLOAD with the fop function table rebound to a table of cold
+;;; loading functions.
 (defun cold-load (filename)
   #!+sb-doc
   "Load the file named by FILENAME into the cold load image being built."