[cells-cvs] CVS update: cell-cultures/cells/integrity.lisp cell-cultures/cells/model-object.lisp

Kenny Tilton ktilton at common-lisp.net
Fri Jul 9 03:53:05 UTC 2004


Update of /project/cells/cvsroot/cell-cultures/cells
In directory common-lisp.net:/tmp/cvs-serv14181/cells

Modified Files:
	integrity.lisp model-object.lisp 
Log Message:

Date: Thu Jul  8 20:53:04 2004
Author: ktilton

Index: cell-cultures/cells/integrity.lisp
diff -u cell-cultures/cells/integrity.lisp:1.3 cell-cultures/cells/integrity.lisp:1.4
--- cell-cultures/cells/integrity.lisp:1.3	Tue Jul  6 18:25:40 2004
+++ cell-cultures/cells/integrity.lisp	Thu Jul  8 20:53:04 2004
@@ -51,8 +51,8 @@
   `(let ((*deference-acknowledged* t))
      , at body))
 
-(defmacro with-integrity ((key &rest defer-info) &rest body)
-  `(call-with-integrity ,key (list , at defer-info)
+(defmacro with-integrity ((debug-key &rest defer-info) &rest body)
+  `(call-with-integrity ,debug-key (list , at defer-info)
      (lambda () , at body)))
 
 (defun ufb-queue (opcode)
@@ -61,7 +61,7 @@
 (defun ufb-add (opcode continuation)
   (fifo-add (ufb-queue opcode) continuation))
 
-(defconstant-once *ufb-opcodes* '(:user-notify :output :setf :makunbound))
+(defconstant-once *ufb-opcodes* '(:user-notify :output :setf :makunbound :finalize))
 
 (define-condition c-opcode-deferred (c-enabling)
    ((defer-info :initarg :defer-info :reader defer-info))
@@ -72,8 +72,8 @@
 
 (defparameter *ufb-needed* nil)
 
-(defun call-with-integrity (key defer-info action &aux (opcode (car defer-info)))
-  (declare (ignorable key))
+(defun call-with-integrity (debug-key defer-info action &aux (opcode (car defer-info)))
+  (declare (ignorable debug-key))
   (assert (or (null opcode) (member opcode *ufb-opcodes*)))
   (trc nil "call-with-integrity entry *unfinished-business*" *unfinished-business*)
   (if *unfinished-business*
@@ -91,7 +91,7 @@
            (mapcar (lambda (opcode)
                      (cons opcode (make-fifo-queue)))
              *ufb-opcodes*)))
-      (trc nil "!!!!!!!!!! started new *unfinished-business*" key defer-info)
+      (trc nil "!!!!!!!!!! started new *unfinished-business*" debug-key defer-info)
       (when (or (zerop *data-pulse-id*)
               (member opcode '(:setf :makunbound)))
         (data-pulse-next (cons opcode defer-info))
@@ -145,4 +145,12 @@
             (push c setfs)
             (data-pulse-next (list :finbiz c new-value))
             (funcall task-fn))))
+      (go notify-users))
+
+    ; --- do finalizations ------------------------
+    (setf task (fifo-pop (ufb-queue :finalize)))
+    (when task
+      (destructuring-bind ((self) . task-fn) task
+        (trc "finbiz: deferred finalize!!!!" self)
+        (funcall task-fn))
       (go notify-users))))


Index: cell-cultures/cells/model-object.lisp
diff -u cell-cultures/cells/model-object.lisp:1.2 cell-cultures/cells/model-object.lisp:1.3
--- cell-cultures/cells/model-object.lisp:1.2	Sun Jul  4 11:59:41 2004
+++ cell-cultures/cells/model-object.lisp	Thu Jul  8 20:53:04 2004
@@ -154,7 +154,7 @@
             (progn ;; next bit revised to avoid double-output of optimized cells
               (when (eql '.kids slot-name)
                 (bwhen (sv (slot-value self '.kids))
-                  (trc nil "soon will output initial kids of" self)
+                  (trc "soon will output initial kids of" self)
                   (md-kids-change self sv nil :md-awaken-slot)))
               (c-output-initially self slot-name)))))))
   





More information about the Cells-cvs mailing list