diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-10-23 06:54:36 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-10-23 06:54:36 -0700 |
commit | 1ce4659039a548fdbf204e868a11475b1f6dcd0a (patch) | |
tree | 80d3b2a621a9ddffe9c865e998d6eb383c4cd34b /txr-embedded-arg.txr | |
parent | 09ababf4284febbc9c96a62e6711826d110e3eb1 (diff) | |
download | txr-1ce4659039a548fdbf204e868a11475b1f6dcd0a.tar.gz txr-1ce4659039a548fdbf204e868a11475b1f6dcd0a.tar.bz2 txr-1ce4659039a548fdbf204e868a11475b1f6dcd0a.zip |
hash: optimization in remhash.
* hash.c (remhash): Walk chain to splice out to-be-removed
entry using an approach similar to what is done in
do_weak_tables to splice out lapsed weak entries. This
eliminates one extra traversal of the chain as well as consing
due to the ldiff call. We use raw pointers obtained using
valptr, and direct assignment through *pchain because later
cells in a chain are strictly older objects than earlier
cells and so so the *pchain = cdr(*pchain) assignment cannot
make a generation 1 object point to a generation 0 object.
Diffstat (limited to 'txr-embedded-arg.txr')
0 files changed, 0 insertions, 0 deletions