Implement ephemerons.
authorTaylor R Campbell <campbell@mumble.net>
Tue, 10 Aug 2010 18:43:44 +0000 (18:43 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Tue, 10 Aug 2010 18:43:44 +0000 (18:43 +0000)
commitebb25823b04a812143fb2b5088fadc7629fb7ad9
tree5fd83e64a94ce631d6d1f1da6f4883a82852a202
parent4482288c5742b4ab470501564c325c6f79eb7dc4
Implement ephemerons.

Ephemerons are like weak pairs, except the datum is dropped if the
key is dropped, and references to the key through the datum don't
count if the only references to the datum are through the ephemeron.
In other words, the weak references to the key and datum are dropped
iff the key can be proven dead; conversely, the references to the key
and datum are preserved iff somebody else cares about the key.
14 files changed:
src/microcode/extern.h
src/microcode/fasdump.c
src/microcode/fasload.c
src/microcode/gccode.h
src/microcode/gcloop.c
src/microcode/memmag.c
src/microcode/object.h
src/microcode/sdata.h
src/microcode/storage.c
src/microcode/typename.txt
src/microcode/types.h
src/runtime/global.scm
src/runtime/runtime.pkg
tests/runtime/test-ephemeron.scm [new file with mode: 0644]