src/{builtin,final,frontent}.lisp: `clear-the-decks' makes builtin module.
[sod] / src / builtin.lisp
index 395d2cf..5aad5f5 100644 (file)
@@ -61,7 +61,7 @@
       ',name
       (lambda (,classvar)
        (make-sod-slot ,classvar ,name (c-type ,type)
-                      (make-property-set :lisp-class 'sod-class-slot
+                      (make-property-set :slot-class 'sod-class-slot
                                          :initializer-function
                                          (lambda (,class)
                                            ,init)
@@ -95,7 +95,7 @@ static void *~A__imprint(void *p)
 {
   struct ~A *sod__obj = p;
 
-  ~:{sod__obj->~A.~A._vt = &~A;~:^~%  ~}
+  ~:{sod__obj->~A.~A._vt = &~A.~A;~:^~%  ~}
   return (p);
 }~2%"
            class
@@ -105,7 +105,8 @@ static void *~A__imprint(void *p)
                             (tail (ichain-tail ichain)))
                        (list (sod-class-nickname head)
                              (sod-class-nickname tail)
-                             (vtable-name class head))))
+                             (vtable-name class head)
+                             (sod-class-nickname tail))))
                    (ilayout-ichains ilayout)))))
 
 (define-class-slot "init" (class stream)
@@ -292,9 +293,11 @@ static const SodClass *const ~A__cpl[] = {
       (finalize-sod-class class)
       (add-to-module module class))))
 
+(export '*builtin-module*)
 (defvar *builtin-module* nil
   "The builtin module.")
 
+(export 'make-builtin-module)
 (defun make-builtin-module ()
   "Construct the builtin module.
 
@@ -329,4 +332,7 @@ static const SodClass *const ~A__cpl[] = {
       (bootstrap-classes module))
     (setf *builtin-module* module)))
 
+(define-clear-the-decks builtin-module
+  (unless *builtin-module* (make-builtin-module)))
+
 ;;;----- That's all, folks --------------------------------------------------