v86/tests/expect
Fabian 0798a0b40e Don't create unnecessary entry points
This commit prevents creation of entry points for jumps within the same
page. In interpreted mode, execution is continued on these kinds of
jumps.

Since this prevents the old hotness detection from working efficiently,
hotness detection has also been changed to work based on instruction
counters, and is such more precise (longer basic blocks are compiled
earlier).

This also breaks the old detection loop safety mechanism and causes
Linux to sometimes loop forever on "calibrating delay loop", so
JIT_ALWAYS_USE_LOOP_SAFETY has been set to 1.
2020-08-30 19:29:54 -05:00
..
tests Don't create unnecessary entry points 2020-08-30 19:29:54 -05:00
readme.md Clarify that expect test uses flat binaries 2020-07-21 20:10:14 -05:00
run.js Expect tests: Catch libwabt errors and try to help 2020-08-30 19:29:54 -05:00

Expect tests

These so-called "expect tests" test the code generation, i.e. the translation of x86 assembly to Web Assembly. Use the following workflow:

  1. Hack on the code generator
  2. Run make expect-tests
  3. For each failing test:
    • Manually verify that the generated code changes are as expected by the diff
    • If so, accept the new code by copying the .actual.wast file over the .wast file and checking the new .wast file into git

In order to add a new expect test:

  1. Create a new .asm file in tests/
  2. Run make expect-tests
  3. Verify the generated code and use the printed cp command to accept the test

Note that .asm files are translated to flat binaries, not elf files, so a .data section may be meaningless.

For more information, see https://blog.janestreet.com/testing-with-expectations/