diff options
| author | Estevan Castilho <tevo@riajuu.net> | 2026-10-08 00:54:55 +0000 |
|---|---|---|
| committer | Estevan Castilho <tevo@riajuu.net> | 2026-10-08 01:06:52 +0000 |
| commit | 0354a7c21cae08cda07864dcb70a76d37fe43375 (patch) | |
| tree | 468ebe1b682969b1a387baca99fab31dc3447e16 /lib/kernel/Lifecycle.ml | |
| parent | b7b1c74b43dd5403d9d087845c8098b197ad0969 (diff) | |
| download | RNT-0354a7c21cae08cda07864dcb70a76d37fe43375.tar.gz RNT-0354a7c21cae08cda07864dcb70a76d37fe43375.zip | |
Log whenever managed objects are garbage collected
Diffstat (limited to 'lib/kernel/Lifecycle.ml')
| -rw-r--r-- | lib/kernel/Lifecycle.ml | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/kernel/Lifecycle.ml b/lib/kernel/Lifecycle.ml index ac6bb20..4fb12b9 100644 --- a/lib/kernel/Lifecycle.ml +++ b/lib/kernel/Lifecycle.ml @@ -1,6 +1,7 @@ class type lifecycle = object method reference : bool method release : unit + method is_managed : bool end class type virtual controlled_lifecycle = object @@ -12,6 +13,7 @@ class null = object method reference = true method release = () + method is_managed = false end class exclusive = @@ -19,6 +21,7 @@ class exclusive = val taken = Atomic.make false method reference = Atomic.compare_and_set taken false true method release = Atomic.set taken false + method is_managed = true end class virtual counted = @@ -27,6 +30,7 @@ class virtual counted = method virtual destroy : unit method reference = Atomic.incr references; true method release = if Atomic.fetch_and_add references (-1) = 1 then self#destroy + method is_managed = true end class retaining inner (owner : lifecycle) = |
