tinygo/transform
Ayke van Laethem 4e8453167f all: refactor reflect package
This is a big commit that changes the way runtime type information is stored in
the binary. Instead of compressing it and storing it in a number of sidetables,
it is stored similar to how the Go compiler toolchain stores it (but still more
compactly).

This has a number of advantages:

  * It is much easier to add new features to reflect support. They can simply
    be added to these structs without requiring massive changes (especially in
    the reflect lowering pass).
  * It removes the reflect lowering pass, which was a large amount of hard to
    understand and debug code.
  * The reflect lowering pass also required merging all LLVM IR into one
    module, which is terrible for performance especially when compiling large
    amounts of code. See issue 2870 for details.
  * It is (probably!) easier to reason about for the compiler.

The downside is that it increases code size a bit, especially when reflect is
involved. I hope to fix some of that in later patches.
2023-02-17 22:54:34 +01:00
..
testdata all: refactor reflect package 2023-02-17 22:54:34 +01:00
allocs.go all: remove pointer ElementType calls 2022-10-19 22:23:19 +02:00
allocs_test.go all: update _test.go files for ioutil changes 2022-08-07 10:32:23 +02:00
errors.go refactor coroutine lowering and tasks 2020-03-17 12:16:10 +01:00
gc.go transform: remove duplicate if in gc transform 2022-11-18 20:19:47 +01:00
gc_test.go gc: drop support for 'precise' globals 2022-06-01 21:21:30 +02:00
globals.go all: remove support for LLVM 11 and LLVM 12 2022-05-07 17:15:35 +02:00
globals_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
interface-lowering.go all: refactor reflect package 2023-02-17 22:54:34 +01:00
interface-lowering_test.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00
interrupt.go ci: add support for LLVM 15 2022-10-19 22:23:19 +02:00
interrupt_test.go transform: refactor interrupt lowering 2021-11-06 09:40:15 +01:00
llvm.go ci: add support for LLVM 15 2022-10-19 22:23:19 +02:00
maps.go all: move OptimizeMaps to transforms and add tests 2019-09-15 21:26:27 +02:00
maps_test.go all: add LLVM 12 support 2021-11-30 21:53:16 +01:00
optimizer.go all: refactor reflect package 2023-02-17 22:54:34 +01:00
panic.go all: add type parameter to CreateCall 2022-10-19 22:23:19 +02:00
panic_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
rtcalls.go all: refactor reflect package 2023-02-17 22:54:34 +01:00
rtcalls_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
stacksize.go avr: support ThinLTO 2022-11-18 18:40:38 +01:00
stacksize_test.go all: add flag for setting the goroutine stack size 2022-09-15 12:43:51 +02:00
transform.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00
transform_test.go all: update _test.go files for ioutil changes 2022-08-07 10:32:23 +02:00
util.go compiler: move OptimizeStringToBytes to transform package 2019-09-22 08:25:50 +02:00
wasm-abi.go wasm: remove -wasm-abi= flag 2022-11-04 08:28:26 +01:00
wasm-abi_test.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00