Fix breakage I caused with a previous refactoring.
authorChris Hanson <org/chris-hanson/cph>
Sat, 28 Apr 2018 04:59:58 +0000 (21:59 -0700)
committerChris Hanson <org/chris-hanson/cph>
Sat, 28 Apr 2018 04:59:58 +0000 (21:59 -0700)
commit6b629abead354bafd5643fafc71139d289f3b0d6
tree8e336d1a65e0b2c437e84ed32306d96c765c3c04
parentdef85265a5113987b6c34afb22ae56a9a7d53d3e
Fix breakage I caused with a previous refactoring.

The procedures hash-table-update! and hash-table/modify! were not equivalent, as
I blindly assumed during the refactor.  Changing hash-table-update! to use the
same implementation as hash-table/modify! caused the unit tests to fail, because
that implementation couldn't implement the tested behavior.

Rather than try to fix the implementation, I reverted hash-table-update! to its
previous implementation.  The rationale for this is that fixing the implementation
would effectively eliminate its performance advantage, while still being hard to
understand.  The older implementation is trivial to understand and eliminates
the restriction that the update procedure not use the hash table.

An additional complication arose because the previous implementation of
hash-table-update! returned an unspecified value, which broke hash-table-intern!
and caused hash-table/modify! to differ from its previous behavior.  I fixed
these by rewriting them without using hash-table-update!.
doc/ref-manual/associations.texi
src/runtime/hash-table.scm