diff options
author | Andy Wingo <wingo@pobox.com> | 2011-10-24 10:55:46 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-10-24 12:54:22 +0200 |
commit | 633f3a18b7c6804b75ecd8ae94cf6cf82c9bcbed (patch) | |
tree | ef8d023c1e42b3ac611d39bba09dab4bb5813487 | |
parent | a141db8604ecca8a4f4c210cd680b41e337c689a (diff) | |
download | guile-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.scm | 12 |
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))))) |