ladybird/Libraries/LibWasm/AbstractMachine
Ali Mohammad Pur 0e5ecef848 LibWasm: Try really hard to avoid touching the value stack
This commit adds a register allocator, with 8 available "register"
slots.
In testing with various random blobs, this moves anywhere from 30% to
74% of value accesses into predefined slots, and is about a ~20% perf
increase end-to-end.

To actually make this usable, a few structural changes were also made:
- we no longer do one instruction per interpret call
- trapping is an (unlikely) exit condition
- the label and frame stacks are replaced with linked lists with a huge
  node cache size, as we only need to touch the last element and
  push/pop is very frequent.
2025-08-08 12:54:06 +02:00
..
AbstractMachine.cpp LibWeb+LibWasm: Reject module instantiation with correct error type 2025-07-25 15:13:28 +02:00
AbstractMachine.h LibWasm: Give some inline capacity to the frame and label stacks 2025-08-08 12:54:06 +02:00
BytecodeInterpreter.cpp LibWasm: Try really hard to avoid touching the value stack 2025-08-08 12:54:06 +02:00
BytecodeInterpreter.h LibWasm: Try really hard to avoid touching the value stack 2025-08-08 12:54:06 +02:00
Configuration.cpp LibWasm: Try really hard to avoid touching the value stack 2025-08-08 12:54:06 +02:00
Configuration.h LibWasm: Try really hard to avoid touching the value stack 2025-08-08 12:54:06 +02:00
Interpreter.h LibWasm: Make traps hold on to externally-managed data 2025-04-22 08:43:46 -06:00
Operators.h LibWasm: Return canonical NaN for min/max/floor/ceil/truncate operations 2025-07-27 15:35:28 +02:00
Validator.cpp LibWasm: Try really hard to avoid touching the value stack 2025-08-08 12:54:06 +02:00
Validator.h LibWasm: Hold on to the stack depth for expressions in the validator 2025-08-08 12:54:06 +02:00