├── fuzz ├── o │ └── .gitignore ├── t │ ├── 00.t │ ├── 01.t │ ├── 20.t │ ├── 10.t │ └── 11.t ├── Makefile ├── fuzz.dict └── fuzz.cpp ├── doc ├── mapping0.g ├── value.dot ├── mapping1.g ├── mapping2.g ├── memtrack.png ├── rnd_assign.png ├── rnd_insert.png ├── rnd_lookup.png ├── rnd_remove.png ├── seq_assign.png ├── seq_insert.png ├── seq_lookup.png ├── seq_remove.png ├── shortseq.png ├── demo.g ├── node.dot ├── nodestru.dot ├── assign0.dot ├── remove0.dot ├── Makefile ├── value.svg ├── perf-lnx-1.csv ├── perf-lnx-2.csv ├── perf-lnx-3.csv ├── perf-win-1.csv ├── perf-win-2.csv ├── perf-win-3.csv ├── assign1.dot ├── assign2.dot ├── lookup.dot ├── remove1.dot ├── remove2.dot ├── graph.c ├── nodestru.svg ├── perf-analysis.ipynb ├── mapping0.svg ├── node.svg ├── mapping1.svg ├── mapping2.svg ├── assign0.svg ├── remove0.svg ├── remove2.svg ├── assign2.svg ├── demo.svg └── remove1.svg ├── .gitignore ├── .github └── workflows │ ├── fuzz.yml │ └── test.yml ├── perf ├── Makefile ├── run-perf-tests.py ├── wrap.cpp └── bench.cpp ├── test └── Makefile ├── License.txt ├── ivmap.h ├── iset.h └── tlib ├── testsuite.h └── testsuite.c /fuzz/o/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /doc/mapping0.g: -------------------------------------------------------------------------------- 1 | 0xA0000056 = 0x56 2 | d 3 | -------------------------------------------------------------------------------- /doc/value.dot: -------------------------------------------------------------------------------- 1 | digraph { 2 | "y" 3 | } 4 | -------------------------------------------------------------------------------- /fuzz/t/00.t: -------------------------------------------------------------------------------- 1 | A0000056=56 2 | A0000056 3 | A0000056 l 4 | -------------------------------------------------------------------------------- /doc/mapping1.g: -------------------------------------------------------------------------------- 1 | 0xA0000056 = 0x56 2 | 0xA0000057 = 0x57 3 | d 4 | -------------------------------------------------------------------------------- /fuzz/t/01.t: -------------------------------------------------------------------------------- 1 | A0000056=56 2 | A0000056r 3 | A0000056 4 | A0000056 l 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | *.obj 3 | *.pdb 4 | *.ilk 5 | *.exe 6 | *.o 7 | *.out 8 | -------------------------------------------------------------------------------- /doc/mapping2.g: -------------------------------------------------------------------------------- 1 | 0xA0000056 = 0x56 2 | 0xA0000057 = 0x57 3 | 0xA0008009 = 0x8009 4 | d 5 | -------------------------------------------------------------------------------- /doc/memtrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/memtrack.png -------------------------------------------------------------------------------- /doc/rnd_assign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/rnd_assign.png -------------------------------------------------------------------------------- /doc/rnd_insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/rnd_insert.png -------------------------------------------------------------------------------- /doc/rnd_lookup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/rnd_lookup.png -------------------------------------------------------------------------------- /doc/rnd_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/rnd_remove.png -------------------------------------------------------------------------------- /doc/seq_assign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/seq_assign.png -------------------------------------------------------------------------------- /doc/seq_insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/seq_insert.png -------------------------------------------------------------------------------- /doc/seq_lookup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/seq_lookup.png -------------------------------------------------------------------------------- /doc/seq_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/seq_remove.png -------------------------------------------------------------------------------- /doc/shortseq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billziss-gh/imap/HEAD/doc/shortseq.png -------------------------------------------------------------------------------- /fuzz/t/20.t: -------------------------------------------------------------------------------- 1 | A0000056=56 2 | A0000057=57 3 | A0008009=8009 4 | A0008059=8059 5 | A0008069=8069 6 | 90008059 l 7 | B0008059 l 8 | -------------------------------------------------------------------------------- /doc/demo.g: -------------------------------------------------------------------------------- 1 | 0xA0000056 = 0x56 2 | 0xA0000057 = 0x57 3 | 0xA0008009 = 0x8009 4 | 0xA0008059 = 0x8059 5 | 0xA0008069 = 0x8069 6 | d 7 | -------------------------------------------------------------------------------- /fuzz/t/10.t: -------------------------------------------------------------------------------- 1 | A0000056=56 2 | A0000057=57 3 | A0008009=8009 4 | A0008059=8059 5 | A0008069=8069 6 | A0000056 7 | A0000057 8 | A0008009 9 | A0008059 10 | A0008069 11 | A0000056 l 12 | A0000057 l 13 | A0008009 l 14 | A0008059 l 15 | A0008069 l 16 | -------------------------------------------------------------------------------- /fuzz/Makefile: -------------------------------------------------------------------------------- 1 | fuzz: bin afl ; 2 | 3 | ifeq ($(OS),Windows_NT) 4 | 5 | else 6 | 7 | FUZZ=./fuzz.out 8 | bin: fuzz.out 9 | fuzz.out: ../imap.h fuzz.cpp 10 | afl-clang++ -I.. -Wall -Wstrict-aliasing=1 -O3 fuzz.cpp -lstdc++ -o $@ 11 | 12 | endif 13 | 14 | afl: bin 15 | afl-fuzz -i t -o o -x fuzz.dict $(FUZZ) 16 | -------------------------------------------------------------------------------- /fuzz/t/11.t: -------------------------------------------------------------------------------- 1 | A0000056=56 2 | A0000057=57 3 | A0008009=8009 4 | A0008059=8059 5 | A0008069=8069 6 | A0000056r 7 | A0000057r 8 | A0008009r 9 | A0008059r 10 | A0008069r 11 | A0000056 12 | A0000057 13 | A0008009 14 | A0008059 15 | A0008069 16 | A0000056 l 17 | A0000057 l 18 | A0008009 l 19 | A0008059 l 20 | A0008069 l 21 | -------------------------------------------------------------------------------- /fuzz/fuzz.dict: -------------------------------------------------------------------------------- 1 | "=" 2 | "r" 3 | "l" 4 | "0" 5 | "1" 6 | "2" 7 | "3" 8 | "4" 9 | "5" 10 | "6" 11 | "7" 12 | "8" 13 | "9" 14 | "A" 15 | "B" 16 | "C" 17 | "D" 18 | "E" 19 | "F" 20 | "0000" 21 | "1000" 22 | "2000" 23 | "3000" 24 | "4000" 25 | "5000" 26 | "6000" 27 | "7000" 28 | "8000" 29 | "9000" 30 | "A000" 31 | "B000" 32 | "C000" 33 | "D000" 34 | "E000" 35 | "F000" 36 | -------------------------------------------------------------------------------- /doc/node.dot: -------------------------------------------------------------------------------- 1 | digraph { 2 | "node" [shape=plaintext label=< 3 |
| hF...h1h0 / pos | |||||||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| slot0 | pos |
| slot1 | h1 |
| ... | ... |
| slotF | hF |