[elephant-cvs] CVS update: elephant/src/utils.lisp
blee at common-lisp.net
blee at common-lisp.net
Sat Sep 4 08:23:31 UTC 2004
Update of /project/elephant/cvsroot/elephant/src
In directory common-lisp.net:/tmp/cvs-serv12847/src
Modified Files:
utils.lisp
Log Message:
fixed macro arg (dynamic, not lexical) / typo
fixed finalizer in allegro (don't close over the value or it
will never be collected)
Date: Sat Sep 4 10:23:30 2004
Author: blee
Index: elephant/src/utils.lisp
diff -u elephant/src/utils.lisp:1.4 elephant/src/utils.lisp:1.5
--- elephant/src/utils.lisp:1.4 Thu Sep 2 16:47:31 2004
+++ elephant/src/utils.lisp Sat Sep 4 10:23:30 2004
@@ -121,8 +121,8 @@
;; Good defaults for elephant
(defmacro with-transaction ((&key transaction
- (environment (controller-environment
- *store-controller*))
+ (environment '(controller-environment
+ *store-controller*))
(parent '*current-transaction*)
dirty-read txn-nosync
txn-nowait txn-sync
@@ -135,7 +135,7 @@
:txn-nosync ,txn-nosync
:txn-nowait ,txn-nowait
:txn-sync ,txn-sync
- :retries ,100)
+ :retries ,retries)
, at body))
@@ -165,15 +165,22 @@
(gethash key cache)
)
+(defun make-finalizer (key cache)
+ #+(or cmu sbcl)
+ (lambda () (remhash key cache))
+ #+allegro
+ (lambda (obj) (declare (ignore obj)) (remhash key cache))
+ )
+
(defun setf-cache (key cache value)
#+(or cmu sbcl)
(let ((w (make-weak-pointer value)))
- (finalize value #'(lambda () (remhash key cache)))
+ (finalize value (make-finalizer key cache))
(setf (gethash key cache) w)
value)
#+allegro
(progn
- (excl:schedule-finalization value #'(lambda () (remhash key cache)))
+ (excl:schedule-finalization value (make-finalizer key cache))
(setf (gethash key cache) value))
#-(or cmu sbcl scl allegro)
(setf (gethash key cache) value)
More information about the Elephant-cvs
mailing list