| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2023-06-10 | compiler: move error union types and error set types to InternPool | Andrew Kelley | |
| One change worth noting in this commit is that `module.global_error_set` is no longer kept strictly up-to-date. The previous code reserved integer error values when dealing with error set types, but this is no longer needed because the integer values are not needed for semantic analysis unless `@errorToInt` or `@intToError` are used and therefore may be assigned lazily. | |||
| 2023-06-10 | compiler: eliminate legacy Type.Tag.pointer | Andrew Kelley | |
| Now pointer types are stored only in InternPool. | |||
| 2023-06-10 | stage2: move function types to InternPool | Andrew Kelley | |
| 2023-06-10 | stage2: move anon tuples and anon structs to InternPool | Andrew Kelley | |
| 2023-06-10 | stage2: move enum types into the InternPool | Andrew Kelley | |
| Unlike unions and structs, enums are actually *encoded* into the InternPool directly, rather than using the SegmentedList trick. This results in them being quite compact, and greatly improved the ergonomics of using enum types throughout the compiler. It did however require introducing a new concept to the InternPool which is an "incomplete" item - something that is added to gain a permanent Index, but which is then mutated in place. This was necessary because enum tag values and tag types may reference the namespaces created by the enum itself, which required constructing the namespace, decl, and calling analyzeDecl on the decl, which required the decl value, which required the enum type, which required an InternPool index to be assigned and for it to be meaningful. The API for updating enums in place turned out to be quite slick and efficient - the methods directly populate pre-allocated arrays and return the information necessary to output the same compilation errors as before. | |||
| 2023-06-10 | stage2: move union types and values to InternPool | Andrew Kelley | |
| 2023-06-10 | stage2: move struct types and aggregate values to InternPool | Andrew Kelley | |
| 2023-06-10 | stage2: move opaque types to InternPool | Andrew Kelley | |
| 2023-06-10 | stage2: move integer values to InternPool | Andrew Kelley | |
| 2023-06-10 | InternPool: add a slice encoding | Andrew Kelley | |
| This uses the data field to reference its pointer field type, which allows for efficient and infallible access of a slice type's pointer type. | |||
| 2023-06-10 | stage2: move many Type encodings to InternPool | Andrew Kelley | |
| Notably, `vector`. Additionally, all alternate encodings of `pointer`, `optional`, and `array`. | |||
| 2023-06-10 | Type.isSlice: make it InternPool aware | Andrew Kelley | |
| 2023-06-10 | stage2: start the InternPool transition | Andrew Kelley | |
| Instead of doing everything at once which is a hopelessly large task, this introduces a piecemeal transition that can be done in small increments at a time. This is a minimal changeset that keeps the compiler compiling. It only uses the InternPool for a small set of types. Behavior tests are not passing. Air.Inst.Ref and Zir.Inst.Ref are separated into different enums but compile-time verified to have the same fields in the same order. The large set of changes is mainly to deal with the fact that most Type and Value methods now require a Module to be passed in, so that the InternPool object can be accessed. | |||
| 2023-05-26 | std.Target adjustments | Veikka Tuominen | |
| * move `ptrBitWidth` from Arch to Target since it needs to know about the abi * double isn't always 8 bits * AVR uses 1-byte alignment for everything in GCC | |||
| 2023-05-15 | x86_64: reimplement `@floatToInt` | Jacob Young | |
| 2023-05-15 | Dwarf: fix overflow write byte_size | Jacob Young | |
| 2023-05-08 | Dwarf: workaround crash | Jacob Young | |
| 2023-04-28 | compiler: use `@memcpy` instead of `std.mem.copy` | Andrew Kelley | |
| 2023-04-28 | update codebase to use `@memset` and `@memcpy` | Andrew Kelley | |
| 2023-04-13 | macho: fix incorrect DWARF subprogram generation | Jakub Konka | |
| 2023-02-18 | update std lib and compiler sources to new for loop syntax | Andrew Kelley | |
| 2023-02-01 | link: make Wasm atoms fully owned by the linker | Luuk de Gram | |
| 2023-02-01 | link: decouple DI atoms from linker atoms, and manage them in Dwarf linker | Jakub Konka | |
| 2023-02-01 | link: use strtab.StringTable in Dwarf | Jakub Konka | |
| 2023-01-31 | link: make Elf atoms fully owned by the linker | Jakub Konka | |
| 2023-01-31 | link: make MachO atoms fully owned by the linker | Jakub Konka | |
| 2022-12-27 | update uses of overflow arithmetic builtins | Veikka Tuominen | |
| 2022-12-09 | dwarf: resolve all relative paths when generating include_dirs and ↵ | Jakub Konka | |
| file_names lists | |||
| 2022-12-09 | wasm: implement moving debug_line program when header too big | Jakub Konka | |
| 2022-12-09 | dsym: hint linker when file range copy is not necessary | Jakub Konka | |
| 2022-12-09 | elf: hint linker when file range copy is not necessary | Jakub Konka | |
| 2022-12-09 | elf: add growAllocSection and growNonAllocSection | Jakub Konka | |
| Update `Dwarf.zig` to use `growNonAllocSection` for ELF and implement routine to make space for `.debug_line` header. | |||
| 2022-12-09 | dsym: reuse growSection where possible | Jakub Konka | |
| 2022-12-09 | dwarf: move any remaining section growth to dsym | Jakub Konka | |
| 2022-12-09 | dwarf: move growing debug_aranges section to dsym | Jakub Konka | |
| 2022-12-09 | dwarf: move growing debug_abbrev section to dsym | Jakub Konka | |
| 2022-12-09 | dwarf: move another sect growing routine to d_sym | Jakub Konka | |
| 2022-12-09 | macho: add helper for getting ptr to DebugSymbols | Jakub Konka | |
| 2022-12-09 | dwarf+d_sym: move logic for growing section to d_sym | Jakub Konka | |
| 2022-12-09 | dwarf: move SrcFns if debug_line header exceeded its padding | Jakub Konka | |
| 2022-12-09 | dwarf: refactor object file format and ptr width switches in writeDbgLineHeader | Jakub Konka | |
| 2022-12-09 | dwarf: fix incorrect calc of dir index | Jakub Konka | |
| 2022-12-09 | dwarf: refactor routine for precalculating size of dbg line header | Jakub Konka | |
| 2022-12-09 | dwarf: generate list of include dirs and file names like LLVM backend | Jakub Konka | |
| 2022-12-09 | dwarf: fully resolve each path to each file source | Jakub Konka | |
| 2022-12-09 | dwarf: track source files via *const Module.File pointers | Jakub Konka | |
| 2022-12-09 | dwarf: specify all referenced zig source files | Jakub Konka | |
| 2022-12-05 | dwarf: pull out debug line program internals into DeclState helpers | Jakub Konka | |
| 2022-12-05 | dwarf: reuse getDbgInfoAtom helper in all of Dwarf.zig | Jakub Konka | |
| We need to access it outside of `DeclState` too so why not reuse the helper anyway. | |||
| 2022-12-04 | dsym: recalculate DWARF segment size when finalizing | Jakub Konka | |
