Ali Mohammad Pur
06ffc0c4db
LibWasm: Don't create useless temporary strings for trap reasons
...
These strings are only used when execution traps, so there's no reason
to create actual strings until that happens; instead switch to using
StringViews.
2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
5636f8143d
LibWasm: Allow overflow in normal 64-bit arithmetic instructions
2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
d2212a1f51
LibWasm: Jump to the default label in br_table with negative values
...
Also adds a forgotten Wasm::Printer implementation for printing table
branch arguments.
2021-07-06 17:55:00 +04:30
Ali Mohammad Pur
4bdb0ad132
LibWasm: Guard stack accesses with checks
...
If the stack is empty, let's just trap.
2021-07-06 17:55:00 +04:30
Idan Horowitz
301c1a3a58
Everywhere: Fix incorrect usages of AK::Checked
...
Specifically, explicitly specify the checked type, use the resulting
value instead of doing the same calculation twice, and break down
calculations to discrete operations to ensure no intermediary overflows
are missed.
2021-07-04 20:08:28 +01:00
Ali Mohammad Pur
b538e15548
LibWasm: Give traps a reason and display it when needed
...
This makes debugging wasm code a bit easier, as we now know what fails
instead of just "too bad, something went wrong".
2021-07-02 04:53:01 +04:30
Ali Mohammad Pur
c4b82ace74
LibWasm: Limit the call stack depth and the number of executed insts
...
These limits are described in the spec, and we're supposed to stop
execution at some point.
The limits are arbitrarily chosen.
2021-06-22 00:26:25 +04:30
Ali Mohammad Pur
9971d13844
LibWasm: Trap if a non-Value is used as a Value
...
Otherwise we'd just crash, which is not a good thing
2021-06-22 00:26:25 +04:30
Ali Mohammad Pur
45710d0724
LibWasm: Implement saturating float truncation instructions
...
With these, the only remaining unimplemented instructions are the
following:
- memory.init
- data.drop
- memory.copy
- memory.fill
- table.init
- elem.drop
- table.copy
- table.grow
- table.size
- table.fill
2021-06-09 23:05:32 +04:30
Ali Mohammad Pur
3a44011cd4
LibWasm: Implement sign extension instructions
2021-06-09 23:05:32 +04:30
Ali Mohammad Pur
a4c4dd928b
LibWasm: Implement spec-compliant float min/max ops
2021-06-09 23:05:32 +04:30
Sahan Fernando
d02e7b3811
LibWasm: Move Wasm::BytecodeInterpreter into its own header
2021-06-05 14:31:54 +04:30