Commit graph

39 commits

Author SHA1 Message Date
Brian Carroll
b1f15799e3 wasm: Ensure TableSection matches ElementSection 2022-04-05 00:02:05 +01:00
Brian Carroll
ff9bbfab63 wasm: generate code for ZigCC wrapper function 2022-04-05 00:01:11 +01:00
Mats Sigge
71f359fbdc Move macros from roc_reporting to new roc_error_macros module
The `internal_error!` and `user_error!´ macros can't be used everywhere
when they live in `roc_reporting` due to circular dependencies.
2022-01-23 18:40:04 +01:00
Brian Carroll
e37ca971bd Wasm: Simplify CodeBuilder serialization, based on Richard's suggestion 2022-01-15 15:35:37 +00:00
Brian Carroll
8c4fd93b07 Wasm: Remove old debug code that's never used. We have the HTML debugger now. 2022-01-15 13:27:34 +00:00
Brian Carroll
8a01c3f98a Wasm: implement dead code elimination 2022-01-14 18:20: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
e10acd59ee Debug config for Wasm backend 2021-12-26 10:45:18 +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
7ac1c7a72f Get long string literals working in gen_wasm 2021-11-15 15:22:07 +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
Brian Carroll
a61987e032 Rename CodeBuilder::finalize -> CodeBuilder::build_fn_header
We actually have a few more steps to go after this one!
2021-11-09 14:28:15 +00:00
Brian Carroll
38d9fc5bbd Add linker data for strings, and deduplicate them
For references to addresses of constant strings, we make an entry in
reloc.CODE and configure the relocation type to say it points at a
memory address. (At least I think this is right, I can't test it yet!)

The same info can also be used for de-duplication.

It turns out we don't need reloc.DATA. I had misunderstood it.
The use case for that would be constant nested data structures,
where constant data would contain pointers to other constant data.
I don't think we're doing this in Roc at all, but not sure.
2021-11-07 11:20:32 +00:00
Brian Carroll
5f998f3707 Minor refactor in CodeBuilder 2021-11-05 12:26:05 +00:00
Brian Carroll
7fdd6cf952 rust-fmt 2021-11-03 11:59:49 +00:00
Brian Carroll
b432d923b1 Create a linking module 2021-11-03 11:46:46 +00:00
Brian Carroll
d87db20478 clippy 2021-11-03 11:31:12 +00:00
Brian Carroll
ad9b761fce Move wasm file format code into a submodule 2021-11-03 11:20:16 +00:00
Renamed from compiler/gen_wasm/src/code_builder.rs (Browse further)