summaryrefslogtreecommitdiffstats
path: root/hash.c
Commit message (Collapse)AuthorAgeFilesLines
* Big conversion to wide characters and UTF-8 support.Kaz Kylheku2009-11-111-1/+1
| | | | | | | | | This is incomplete. There are too many dependencies on wide character support from the C stream I/O library, and implicit use of some encoding which may not be UTF-8. The regex code does not handle wide characters properly. Character type is still int in some places, rather than wchar_t. Test suite passes though.
* hash.c (hash_grow): Rewritten to avoid resizing the vectorKaz Kylheku2009-11-101-16/+19
| | | | | | | in place, and thus having to pulling all conses into a big list. TODO: avoid recomputing the hash function over the keys. We could enhance cons cells with two more fields without using additional storage.
* Changing representation of objects to allow for unboxed characters.Kaz Kylheku2009-11-091-1/+1
| | | | | Now numbers and characters fit into a cell. We lose one more bit from the range of numbers.
* Add hash removal.Kaz Kylheku2009-11-091-0/+10
|
* Add hash table growth.Kaz Kylheku2009-11-091-2/+32
|
* Changing representation of objects to allow the NUM type to beKaz Kylheku2009-11-091-10/+10
| | | | | | | | unboxed. If the lowest bit of the obj_t * pointer is 1, then the remaining bits are a number. A lot of assumptions are made: - the long type can be converted to and from a pointer - two's complement. - behavior of << and >> operators when the sign bit is involved.
* First cut at hash tables. One known problem is allocation during gc,Kaz Kylheku2009-11-091-0/+301
due to use of boxed numbers for vector access.