Commit graph

238 commits

Author SHA1 Message Date
Brian Carroll
ca501fdcf1 Restructure CodeGenHelp to generate IR immediately, in depth-first traversal 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
Folkert de Vries
2f1c648602
Merge pull request #2253 from rtfeldman/wasm-no-block-results
Wasm: fix nested conditionals
2021-12-21 16:35:22 +01: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
6480a720ae Move symbol_layouts to storage.rs 2021-12-20 16:06:39 +00:00
Brian Carroll
3b2aa0bf6a Fix bugs with symbol layouts in Wasm 2021-12-20 09:53:24 +00:00
Brian Carroll
9b833720d4 Further refactor and debug == in Wasm 2021-12-20 08:39:16 +00:00
Brian Carroll
f59e0e249b Use native instructions for NotEq in Wasm 2021-12-19 21:20:06 +00:00
Brian Carroll
e0ffaca3df Refactor Wasm equality operator 2021-12-19 21:20:06 +00:00
Brian Carroll
c510226c15 Reorganise Wasm lowlevels to get pointer equality working correctly 2021-12-19 21:20:06 +00:00
Brian Carroll
a1d883600c Equality operator for records 2021-12-18 17:25:00 +00:00
rvcas
b9bd75d643 Merge branch 'trunk' into wasm_arrays 2021-12-17 11:54:23 -05:00
rvcas
bc94683100 feat(wasm): copy value to memory 2021-12-17 11:37:40 -05:00
Brian Carroll
1b98673704 Separate stack and heap pointers & create Symbols for list literals 2021-12-17 11:45:54 +00:00
rvcas
bed288330f feat(wasm): try different offsets 2021-12-16 22:27:16 -05:00
rvcas
fc07070617 feat(wasm): trying to add the rest of the elements to the list 2021-12-16 22:14:15 -05:00
rvcas
b35deacebe feat(wasm): use allocate with ref count 2021-12-16 21:23:13 -05:00
rvcas
c14b4b81e0 Merge branch 'trunk' into wasm_arrays 2021-12-16 21:07:12 -05:00
Brian Carroll
3eb9e9f7ac Traverse nested layouts for code gen helpers 2021-12-16 16:56:56 +00:00
Brian Carroll
86d8e2789e Implement Wasm string equality 2021-12-16 16:56:56 +00:00
Brian Carroll
e1a04c2661 Only check layout is implemented for RC, not other ops 2021-12-16 16:56:56 +00:00
Brian Carroll
cd91be678f Setup for specializing equality checks 2021-12-16 16:52:47 +00:00
Brian Carroll
efef2be958 Rename mono IR code gen helpers 2021-12-16 16:52:47 +00:00
Brian Carroll
71de2289ae Rename helper proc generator struct 2021-12-16 16:52:47 +00:00
Brian Carroll
0547647341 Rename code gen helper file in mono 2021-12-16 16:52:47 +00:00
Brian Carroll
594fe9124d Wasm support for 128-bit number literals, isFinite, ==, and != 2021-12-13 09:05:07 +00:00
Brian Carroll
c290bbe7a7 Move layout calculations to layout module 2021-12-12 12:22:10 +00:00
Brian Carroll
2a53e2711d formatting 2021-12-12 08:41:34 +00:00
Brian Carroll
044a2015bb Make better use of Layout methods for GetTagId 2021-12-12 08:35:02 +00:00
Brian Carroll
9594b05c96 Add some debug features to gen_wasm 2021-12-11 20:33:54 +00:00
Brian Carroll
9bf1b9aae3 Fix double-offset bug 2021-12-11 20:33:11 +00:00
Brian Carroll
c53b3c3686 Skip refcounting on unimplemented layouts 2021-12-11 20:33:11 +00:00
Brian Carroll
f3ca3be507 Add Wasm support for recursive tags, along with GetTagId and UnionAtIndex 2021-12-11 20:33:11 +00:00
rvcas
6ada59d7a1 feat(wasm): the beginnings of a real array 2021-12-10 14:44:19 -05:00
Brian Carroll
bab8a0b8a0 Fix alignment bug 2021-12-10 14:52:59 +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
8a1a164544 Prevent >8 bit alignment specifier in Wasm store instruction, which is not allowed 2021-12-08 21:42:48 +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
6a801ebc7e gen_wasm: add support for non-recursive Tags 2021-12-08 20:45:49 +00:00
Brian Carroll
f6b6d91c56 More accurate comment for EmptyArray 2021-12-08 20:30:26 +00:00
Brian Carroll
73c9c7089a Fix gen_wasm Let statement for heap-allocating expressions
When we allocate on the heap we'll need to force LocalId storage.
In that case we don't want CodeBuilder to track the Symbol,
even though it has WasmLayout::Primitive.
So basically it was always the wrong condition to check, but we
got away with it when we had no heap allocations.
2021-12-08 20:30:26 +00:00
Brian Carroll
6b30ab79ac Fix release build of Wasm backend 2021-12-01 00:03:01 +00:00
Brian Carroll
ea64b6488c Add some disabled debugging statements 2021-11-30 12:59:03 +00:00
Brian Carroll
b1ba1d2db9 WasmBackend no longer needs any public fields, only methods 2021-11-30 10:58:03 +00:00
Brian Carroll
a08633fd36 Debugging improvements 2021-11-30 10:58:03 +00:00
Brian Carroll
8a137126fe Fix bug with linker info for refcount procs 2021-11-30 10:57:59 +00:00
Brian Carroll
22ccb6eca4 Prefix string constants with REFCOUNT_MAX 2021-11-30 09:57:31 +00:00