| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | optimize lexer a bit more | 2025-12-20 | 1 | -5/+10 | |
| | | |||||
| * | create distinct interned string type | 2025-12-15 | 1 | -3/+3 | |
| | | | | | | | | | | | | | | | Interned strings are used pervasively, so it's a good idea to add a layer of type safety to differentiate them from general cstrs and avoid potential bugs from comparing non-interned and interned strings. Not that that's happened so far that I can remember, but it could. I'm 90% sure it's legal to alias `struct {char c;}` pointers with `char` pointers. This specific typedef gives type safety but with a simple one-way `internstr -> const char *` typecast (with `&istr->c`). Converting the other way around is more intentional: a straight up cast `(internstr)cstr` which sticks out as unchecked and probably wrong, or calling the intern(cstr) function, which is the right way. | ||||
| * | move intern() to mem.c | 2025-12-15 | 1 | -1/+49 | |
| | | | | | | Being in lex.c was vestigial, since it was being used all over the frontend and backend. | ||||
| * | lexer: use a hashmap to lookup keywords | 2025-12-15 | 1 | -0/+1 | |
| | | |||||
| * | lex: use pmap for macro lookup | 2025-12-12 | 1 | -6/+25 | |
| | | | | | To reduce hashmap code repetition. Also add pmap_del for this purpose | ||||
| * | mem: fix pmap_init and change hashmap load factors to 75% | 2025-12-09 | 1 | -4/+3 | |
| | | |||||
| * | lex: remove some hacks and optimize preprocessor | 2025-11-28 | 1 | -1/+1 | |
| | | |||||
| * | refactor vec_of(T) and misc | 2025-10-20 | 1 | -38/+45 | |
| | | |||||
| * | bugfix for initz | 2025-10-08 | 1 | -1/+2 | |
| | | |||||
| * | alloc changes | 2025-09-17 | 1 | -1/+9 | |
| | | |||||
| * | change freearena for correctness | 2025-09-14 | 1 | -6/+7 | |
| | | |||||
| * | regalloc improvements | 2025-09-14 | 1 | -0/+6 | |
| | | |||||
| * | regalloc: start implementing linear scan | 2025-09-08 | 1 | -10/+3 | |
| | | |||||
| * | add initializers (only static for initialier list rn) | 2023-06-29 | 1 | -2/+13 | |
| | | | | | and other fixes | ||||
| * | fix memory bugs | 2023-06-18 | 1 | -5/+7 | |
| | | |||||
| * | basic ELF output | 2023-06-17 | 1 | -5/+5 | |
| | | |||||
| * | lower allocas in isel() instead of emit() and misc fixes | 2023-06-13 | 1 | -12/+12 | |
| | | |||||
| * | bugfix | 2023-06-12 | 1 | -1/+1 | |
| | | |||||
| * | register renaming and such | 2023-06-12 | 1 | -38/+103 | |
| | | |||||
| * | evaluate call args backwards | 2023-06-04 | 1 | -0/+8 | |
| | | |||||
| * | regalloc skeleton | 2023-05-31 | 1 | -0/+4 | |
| | | |||||
| * | hm | 2023-05-26 | 1 | -0/+93 | |
| | | |||||
| * | initial commit | 2023-05-10 | 1 | -0/+117 | |