1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-07-03 08:10:31 +02:00

Convert mutexes, condition vars to statically-allocated tc16

* libguile/scm.h: Add statically allocated tc16s for condvars and
mutexes.
* libguile/threads.c: Adapt to declare tag inline to struct scm_cond and
struct scm_mutex.
* libguile/threads.h: Expose printing procedures internally.
* module/oop/goops.scm:
* libguile/goops.c: Fix to statically allocate condition variable and
mutex classes.
* libguile/eq.c:
* libguile/print.c: Adapt.
This commit is contained in:
Andy Wingo 2025-06-13 11:45:55 +02:00
parent 7a1406891f
commit f47fe6e752
7 changed files with 114 additions and 67 deletions

View file

@ -71,6 +71,7 @@
<fluid> <dynamic-state> <frame> <vm> <vm-continuation>
<keyword> <syntax> <atomic-box> <thread> <bitvector>
<finalizer> <ephemeron> <ephemeron-table> <character-set>
<mutex> <condition-variable>
;; Numbers.
<number> <complex> <real> <integer> <fraction>
@ -82,7 +83,7 @@
;; corresponding classes, which may be obtained via class-of,
;; once you have an instance. Perhaps FIXME to provide a
;; smob-type-name->class procedure.
<promise> <mutex> <condition-variable>
<promise>
<regexp> <hook> <random-state>
<directory> <array>
<dynamic-object> <macro>
@ -1083,6 +1084,8 @@ slots as we go."
(define-standard-class <ephemeron> (<top>))
(define-standard-class <ephemeron-table> (<top>))
(define-standard-class <character-set> (<top>))
(define-standard-class <condition-variable> (<top>))
(define-standard-class <mutex> (<top>))
(define-standard-class <thread> (<top>))
(define-standard-class <number> (<top>))
(define-standard-class <complex> (<number>))
@ -3531,8 +3534,6 @@ var{initargs}."
;;;
(define <promise> (find-subclass <top> '<promise>))
(define <mutex> (find-subclass <top> '<mutex>))
(define <condition-variable> (find-subclass <top> '<condition-variable>))
(define <regexp> (find-subclass <top> '<regexp>))
(define <hook> (find-subclass <top> '<hook>))
(define <bitvector> (find-subclass <top> '<bitvector>))