summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2011-10-24 10:55:46 +0200
committerAndy Wingo <wingo@pobox.com>2011-10-24 12:54:22 +0200
commit633f3a18b7c6804b75ecd8ae94cf6cf82c9bcbed (patch)
treeef8d023c1e42b3ac611d39bba09dab4bb5813487
parenta141db8604ecca8a4f4c210cd680b41e337c689a (diff)
downloadguile-633f3a18b7c6804b75ecd8ae94cf6cf82c9bcbed.tar.gz
remove mutex in make-object-property
* module/ice-9/boot-9.scm (make-object-property): Remove the mutex; weak tables are now threadsafe.
-rw-r--r--module/ice-9/boot-9.scm12
1 files changed, 4 insertions, 8 deletions
diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm
index 639a63c37..b2e12711a 100644
--- a/module/ice-9/boot-9.scm
+++ b/module/ice-9/boot-9.scm
@@ -886,15 +886,11 @@ VALUE."
;; properties within the object itself.
(define (make-object-property)
- (define-syntax-rule (with-mutex lock exp)
- (dynamic-wind (lambda () (lock-mutex lock))
- (lambda () exp)
- (lambda () (unlock-mutex lock))))
- (let ((prop (make-weak-key-hash-table))
- (lock (make-mutex)))
+ ;; Weak tables are thread-safe.
+ (let ((prop (make-weak-key-hash-table)))
(make-procedure-with-setter
- (lambda (obj) (with-mutex lock (hashq-ref prop obj)))
- (lambda (obj val) (with-mutex lock (hashq-set! prop obj val))))))
+ (lambda (obj) (hashq-ref prop obj))
+ (lambda (obj val) (hashq-set! prop obj val)))))