tinygo/interp/testdata
Ayke van Laethem 30df912565 interp: rewrite entire package
For a full explanation, see interp/README.md. In short, this rewrite is
a redesign of the partial evaluator which improves it over the previous
partial evaluator. The main functional difference is that when
interpreting a function, the interpretation can be rolled back when an
unsupported instruction is encountered (for example, an actual unknown
instruction or a branch on a value that's only known at runtime). This
also means that it is no longer necessary to scan functions to see
whether they can be interpreted: instead, this package now just tries to
interpret it and reverts when it can't go further.

This new design has several benefits:

  * Most errors coming from the interp package are avoided, as it can
    simply skip the code it can't handle. This has long been an issue.
  * The memory model has been improved, which means some packages now
    pass all tests that previously didn't pass them.
  * Because of a better design, it is in fact a bit faster than the
    previous version.

This means the following packages now pass tests with `tinygo test`:

  * hash/adler32: previously it would hang in an infinite loop
  * math/cmplx: previously it resulted in errors

This also means that the math/big package can be imported. It would
previously fail with a "interp: branch on a non-constant" error.
2020-12-22 15:54:23 +01:00
..
basic.ll interp: rewrite entire package 2020-12-22 15:54:23 +01:00
basic.out.ll interp: rewrite entire package 2020-12-22 15:54:23 +01:00
consteval.ll interp: support integer icmp of ptrtoint 2019-11-26 14:43:05 +01:00
consteval.out.ll interp: support integer icmp of ptrtoint 2019-11-26 14:43:05 +01:00
interface.ll interp: add support for constant type asserts 2020-03-20 22:22:24 +01:00
interface.out.ll interp: add support for constant type asserts 2020-03-20 22:22:24 +01:00
map.ll interp: rewrite entire package 2020-12-22 15:54:23 +01:00
map.out.ll interp: rewrite entire package 2020-12-22 15:54:23 +01:00
slice-copy.ll interp: implement runtime.sliceCopy 2019-09-24 18:16:43 +02:00
slice-copy.out.ll interp: rewrite entire package 2020-12-22 15:54:23 +01:00