Files
tinygo/src/runtime
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
..
2018-09-14 20:58:00 +02:00
2023-01-27 10:24:54 +01:00
2019-04-13 19:58:58 +02:00
2022-06-19 11:51:12 +02:00
2022-06-19 11:51:12 +02:00
2022-12-19 23:20:11 +01:00
2023-01-17 19:32:18 +01:00
2023-01-30 21:42:47 +01:00
2022-06-19 11:51:12 +02:00
2022-12-19 23:20:11 +01:00
2022-12-19 23:20:11 +01:00
2022-03-19 19:09:20 +01:00
2022-03-19 15:36:44 +01:00
2023-01-17 19:32:18 +01:00
2023-01-17 19:32:18 +01:00
2023-01-17 19:32:18 +01:00
2023-02-17 22:54:34 +01:00
2022-12-19 23:20:11 +01:00
2023-02-17 22:54:34 +01:00
2022-12-19 23:20:11 +01:00
2022-12-19 23:20:11 +01:00
2022-12-19 23:20:11 +01:00
2022-12-19 23:20:11 +01:00
2022-12-19 23:20:11 +01:00
2018-09-16 13:01:03 +02:00
2022-08-25 11:30:33 +02:00