Brian Carroll
dd79a9b35a
Clippy fixes
2022-01-13 05:41:52 +00:00
Brian Carroll
8a384ffa88
Wasm: parse just enough of the Import section to count functions
2022-01-13 05:41:52 +00:00
Brian Carroll
9f0e0d5099
Wasm: create a hashmap of exported functions
2022-01-13 05:41:52 +00:00
Brian Carroll
fa46ab95fc
Wasm: rename some constants
2022-01-13 05:41:52 +00:00
Brian Carroll
f9fbe461d1
Wasm: Fix section parsing bug
2022-01-13 05:41:52 +00:00
Brian Carroll
3067358a33
Wasm: test for LEB-128 decoder
2022-01-13 05:41:52 +00:00
Brian Carroll
9c0abcd0da
Wasm: Preload WasmModule from object file bytes
2022-01-13 05:41:52 +00:00
Brian Carroll
d3554b2ac0
Wasm: Create Section trait for common functionality between module sections
2022-01-13 05:41:52 +00:00
Brian Carroll
5d5e0eca96
Wasm: Convert remaining sections to store bytes, and add .size() methods
2022-01-13 05:41:52 +00:00
Brian Carroll
5a39002e8b
Wasm: Serialize WasmModule without linking info
2022-01-13 05:41:52 +00:00
Brian Carroll
b8ab6af203
Wasm: move WasmModule definition to mod.rs
2022-01-13 05:41:52 +00:00
Brian Carroll
d88b86e884
Wasm: change TypeSection tests to unit tests rather than integration tests
2022-01-13 05:41:52 +00:00
Brian Carroll
8e7f398e50
Wasm: Remove code to adjust function indices based on imports
...
With pre-linking we don't need this anymore. Pure Roc code can't add Imports.
2022-01-13 05:41:52 +00:00
Brian Carroll
c5653951a4
Wasm: improve the TypeSection preload test
2022-01-10 10:26:43 +00:00
Brian Carroll
8f73b722ff
Wasm: fix release build
2022-01-10 10:26:43 +00:00
Brian Carroll
fc677e8d58
Wasm: add preloading logic for Types section
2022-01-10 10:26:43 +00:00
Brian Carroll
c89f74f7e8
Wasm: clippy fixes
2022-01-10 10:26:43 +00:00
Brian Carroll
a1f737d6d8
Wasm: Create OpaqueSection for sections that may be used in builtins but not by us
2022-01-10 10:26:43 +00:00
Brian Carroll
738434329e
Wasm: refactor the model of the Linking section
2022-01-10 10:26:42 +00:00
Brian Carroll
6db7dbed1c
Wasm: Store DataSection as bytes and segment count
2022-01-10 10:26:42 +00:00
Brian Carroll
b8f51fb1bb
Wasm: add preloaded_bytes and preloaded_count to Code section
2022-01-10 10:26:42 +00:00
Brian Carroll
743e14148c
Wasm: Store Function section as bytes and a count
2022-01-10 10:26:42 +00:00
Brian Carroll
7a6c6b675c
Wasm: Store type signatures in serialized form
2022-01-10 10:26:42 +00:00
Brian Carroll
e10acd59ee
Debug config for Wasm backend
2021-12-26 10:45:18 +00:00
Brian Carroll
1f86ad3438
Fix Wasm function indices for generated helpers
2021-12-26 10:40:45 +00:00
Brian Carroll
471e2c3143
Completely delete Wasm BlockType
2021-12-21 23:14:55 +00:00
Brian Carroll
1c20075d7b
Change usage of Wasm if
instruction now that we don't support block results anymore
2021-12-21 23:14:55 +00:00
Brian Carroll
2a141b3586
Automatically clean up any unused values at the end of a block
2021-12-21 13:16:15 +00:00
Brian Carroll
17dc6668ec
Make all Wasm blocks NoResult and always put return value in a local var.
2021-12-21 13:16:15 +00:00
Brian Carroll
51119c8142
Emit less code for ensure_value_has_local
2021-12-21 13:16:15 +00:00
Brian Carroll
9594b05c96
Add some debug features to gen_wasm
2021-12-11 20:33:54 +00:00
Brian Carroll
3f7b3bef87
Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-tags
2021-12-09 09:28:11 +00:00
Brian Carroll
1dda8859c4
Update gen_wasm's error handling to remove Result and use macros consistently
2021-12-09 00:11:44 +00:00
Brian Carroll
a25101b378
Remove unusable variants from Align enum
...
I discovered today that Wasmer throws an error if you use
"higher than natural" alignment in a store instruction.
So let's take them out of the enum.
2021-12-08 21:55:14 +00:00
Brian Carroll
1ba654c5b2
Change round_up_to_alignment to a macro to work on more Rust types
2021-12-08 21:11:10 +00:00
Brian Carroll
a08633fd36
Debugging improvements
2021-11-30 10:58:03 +00:00
Brian Carroll
dcd4914ac1
Fix and enable tests involving empty records
2021-11-29 00:57:28 +00:00
Brian Carroll
27af5897d1
Handle zero-size structs
2021-11-28 21:04:40 +00:00
Brian Carroll
b8f40011b9
Generate a test "platform" with libc allocator functions
2021-11-16 11:59:46 +00:00
Brian Carroll
7ac1c7a72f
Get long string literals working in gen_wasm
2021-11-15 15:22:07 +00:00
Brian Carroll
a5c3809290
Delete DataCountSection. Not well-supported and only needed for instructions we don't use
...
https://webassembly.github.io/spec/core/binary/modules.html#binary-datacountsec
Tools like wasm2wat and wasm-validate reject the module when this section is included!
Its purpose is to enable single-pass validation for two specific instructions that were
not in the original Wasm MVP: memory.init and data.drop.
We don't use them in our Roc backend. It seems to make sense just to drop the section.
2021-11-15 12:59:28 +00:00
Brian Carroll
d34f5050cb
formatting
2021-11-14 13:35:25 +00:00
Brian Carroll
f121d6f599
Fix formatting
2021-11-14 13:21:56 +00:00
Brian Carroll
a2abf9c3d2
More accurate model of the Wasm VM's stack machine, with control flow blocks
2021-11-14 12:29:54 +00:00
Brian Carroll
39263b0ab1
Shorter name: VmSymbolState
2021-11-14 10:57:19 +00:00
Brian Carroll
daf6771bf5
Shorten the name of the Symbol for temporary Wasm values
2021-11-12 17:51:50 +00:00
Brian Carroll
4b3538dc58
Simplify CodeBuilder::call
2021-11-12 17:51:50 +00:00
Brian Carroll
7f633c107f
Fix a bug in our model of the Wasm VM stack
2021-11-12 17:44:31 +00:00
Brian Carroll
830003c9a3
Change wasm opcodes to an enum
2021-11-10 20:18:55 +00:00
Brian Carroll
7c95189e4a
Get lots of Num lowlevel ops working
2021-11-10 14:21:32 +00:00