tinygo/interp/testdata
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
..
alloc.ll all: store data layout as little endian value 2023-01-17 19:32:18 +01:00
alloc.out.ll interp: use object layout information for LLVM types 2021-11-02 22:16:15 +01:00
basic.ll interp: take care of constant globals 2021-11-11 08:59:32 +01:00
basic.out.ll interp: take care of constant globals 2021-11-11 08:59:32 +01:00
consteval.ll interp: add support for constant icmp instructions 2022-10-19 22:23:19 +02:00
consteval.out.ll interp: add support for constant icmp instructions 2022-10-19 22:23:19 +02:00
interface.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
interface.out.ll interp: handle type assertions on nil interfaces 2022-01-21 14:49:36 +01:00
phi.ll interp: fix phi instruction 2021-04-21 07:37:22 +02:00
phi.out.ll interp: fix phi instruction 2021-04-21 07:37:22 +02:00
revert.ll interp: do not unroll loops 2022-06-02 18:13:56 +02:00
revert.out.ll interp: do not unroll loops 2022-06-02 18:13:56 +02:00
slice-copy.ll compiler, runtime: add layout parameter to runtime.alloc 2021-11-02 22:16:15 +01:00
slice-copy.out.ll all: update to LLVM 14 2022-04-23 08:45:46 +02:00