Use weak pairs for some entries in obarray buckets.
authorTaylor R Campbell <campbell@mumble.net>
Thu, 3 Dec 2009 01:53:54 +0000 (20:53 -0500)
committerTaylor R Campbell <campbell@mumble.net>
Thu, 3 Dec 2009 01:53:54 +0000 (20:53 -0500)
commit056bfc369b57df0864fd88f40ce26cd0e5da75ed
tree3aa0ce2b57a6ecfedb5bf1f657141aa415183331
parent9701ce2d79dfd8a2f3ebcb9f27b48308268a12ab
Use weak pairs for some entries in obarray buckets.

Entries for symbols with global bindings still use ordinary pairs.
This enables interned symbols without global bindings to be garbage-
collected.  Operations in lookup.c that create or destroy global
bindings update the relevant obarray bucket entry to strengthen or
weaken it.

In the process, fix intern.c's string_hash to accept a long string
length, rather than a uint32_t string length, so that strings longer
than 4 GB will not lose on 64-bit systems.
src/edwin/schmod.scm
src/microcode/extern.h
src/microcode/intern.c
src/microcode/lookup.c
src/runtime/global.scm
src/runtime/runtime.pkg
src/runtime/uenvir.scm