Commit graph

341 commits

Author SHA1 Message Date
Brendan Hansknecht
48f17a8e2c
add Str.releaseExcessCapacity 2023-03-15 15:24:59 -07:00
Brendan Hansknecht
8d5a182f83
fmt 2023-03-15 13:25:45 -07:00
Brendan Hansknecht
dbead004c5
clippy 2023-03-15 13:25:45 -07:00
Brendan Hansknecht
782411cfcb
correct passing str to sub function 2023-03-15 13:25:44 -07:00
Brendan Hansknecht
3dd16d2114
fix pushing to alloca 2023-03-15 13:25:44 -07:00
Brendan Hansknecht
3978059aa2
add seamless slices for str 2023-03-15 13:23:34 -07:00
Brendan Hansknecht
1319ba4844
add List.releaseExcessCapacity builtin 2023-03-13 17:43:21 -07:00
Brendan Hansknecht
b94a046b0d
make sure to check raw capacity when decrementing refcounts 2023-03-13 14:08:24 -07:00
Brendan Hansknecht
dfb748fb03
misc cleanup + change refcount pointer to avoid branching 2023-03-13 14:08:24 -07:00
Brendan Hansknecht
f9274e575b
update list decref to know about seamless slices 2023-03-13 14:08:23 -07:00
Brendan Hansknecht
146dff5446
add llvm refcounting and fix memory leak 2023-03-13 14:08:23 -07:00
Brendan Hansknecht
4ced1bcfdd
add baseline of seamless slices 2023-03-13 14:08:23 -07:00
Brendan Hansknecht
e6964536b2
add more Num.bytesTo* functions 2023-03-12 08:41:05 -07:00
Brendan Hansknecht
785da377c8
add Num.count*Bits functions 2023-03-12 08:41:04 -07:00
Brendan Hansknecht
d5e191d083
split up bitcode building to reduce dependency chains 2023-03-10 09:39:43 -08:00
Brendan Hansknecht
f42f61e271
run a toml formatter and then clean it up a bit 2023-03-06 19:47:57 -08:00
Brendan Hansknecht
4a89bee0a5
centralize package versions except for vendor and excluded 2023-03-06 19:29:09 -08:00
Brendan Hansknecht
5485c8a5b0
update to using workspace package spec 2023-03-06 16:36:18 -08:00
Folkert
68524ef07e
generate callers based on layout traversal 2023-02-20 22:05:35 +01:00
Ayaz Hafiz
94c2c47da4
Handle case where only other tag of nullable unwrapped needs no refcount
It's possible to have a nullable unwrapped code where the only material
payload does not need refcounting operations. In this case the
refcounting function is the trivial one.
2023-02-16 09:38:49 -06:00
Folkert
178e80fa9a
fix for when C has to return an empty tag union 2023-02-15 15:30:26 +01:00
Folkert
0072192897
prepare for llvm 15 2023-01-28 14:51:47 +01:00
Ahmad Sattar
f80edb6ed6
Put list_element_layout! macro into mono 2023-01-28 02:01:02 +01:00
Ayaz Hafiz
673ca9a02f
Clippy 2023-01-25 13:33:32 -06:00
Ayaz Hafiz
ae7c899e51
Lift up more layouts 2023-01-25 13:14:38 -06:00
Ayaz Hafiz
3c8b68d3bb
Lift up insertions of layouts 2023-01-25 13:12:38 -06:00
Ayaz Hafiz
d2e247ed6e
Remove unused var 2023-01-25 13:03:31 -06:00
Ayaz Hafiz
f451ba49f1
Toss out when-recursive from llvm backend 2023-01-25 12:48:06 -06:00
Ayaz Hafiz
37d9307fbf
Call insert_recursive for union layouts 2023-01-23 15:40:40 -06:00
Ayaz Hafiz
8750127111
Begin support for looping-back recursive pointers to their source layouts 2023-01-23 14:37:48 -06:00
Ayaz
616d699e59
Merge pull request #4894 from roc-lang/list-reserve-zst
handle zero-sized types in list decrement
2023-01-14 19:44:31 -06:00
Folkert de Vries
9a86e7e080
Merge pull request #4896 from roc-lang/expect-crash
reproduce crash in `expect` with Lists of different length
2023-01-14 16:53:52 +01:00
Folkert de Vries
e3a213c0dc
Merge pull request #4882 from roc-lang/weakening-3
Begin weakening let-bindings to non-function, non-number expressions
2023-01-14 15:32:27 +01:00
Folkert
dca1c665ae
fix list elementes being cloned to the wrong place 2023-01-14 14:25:23 +01:00
Folkert
437498b7ac
list decrement must use capacity, not length 2023-01-14 13:14:37 +01:00
Ayaz Hafiz
5eda760f1c
Fix bug in loading host-exposed list pointers 2023-01-12 10:20:11 -06:00
Ayaz Hafiz
f321369f4d
Fixing comparing runtime representations of layouts 2023-01-11 14:39:11 -06:00
Ayaz Hafiz
03ece6e274
Update llvm backend 2023-01-11 14:39:10 -06:00
Richard Feldman
94ccb0fd8d
Merge pull request #4849 from roc-lang/intern-layouts-5-lambda-set-layout-cache
Reduce layout intern allocations
2023-01-10 20:35:09 -05:00
Ayaz Hafiz
066bc7d953
Make sure to bump index of nullable-wrapped tag indices after null variants
Fixes a bug in ref-counting.
2023-01-10 10:01:50 -06:00
Ayaz Hafiz
ce717dca8b
Do not require allocating Layouts in arena before interning
This should reduce memory spend, the interner has its own effective
arena anyway
2023-01-10 09:47:13 -06:00
Ayaz Hafiz
50826d1a83
Inline interners into the layout interner module
I realized that we'll need to make the layout interner more complicated
to support things like recursive pointers pointing to their parents and
to support lambda set layout caching. Since the layout interner is the
only user of intern crate right now anyway, just inline the whole thing.
2023-01-03 14:19:39 -06:00
Richard Feldman
ccbd6ad593
Merge pull request #4838 from roc-lang/more-str-docs
Minor `Str` improvements
2022-12-31 01:58:50 -05:00
Richard Feldman
d4baf0ab37
Rename a constant 2022-12-29 20:48:30 -05:00
Ayaz Hafiz
972046445b
Lift Niche from just captures-niche to generic niche 2022-12-29 18:43:26 -06:00
Ayaz Hafiz
14ea3518dc
Unnecessary reference 2022-12-29 11:42:51 -06:00
Ayaz Hafiz
0011636ba9
Allow all the arguments 2022-12-29 11:42:24 -06:00
Ayaz Hafiz
759f8d86af
Fix lifetime errors due to interner
In the llvm backend, there are the lifetimes `'a` (lifetime of the
global arena) and `'ctx` (lifetime of constructed LLVM values). `'a`
lives longer than `'ctx`, but the compiler didn't enforce this until
the layout interner was introduced, for some reason. We have to make
sure that containers of lifetime `'a` have no `'ctx` references.
2022-12-29 11:38:34 -06:00
Ayaz Hafiz
512a1721ae
Push mutable layout interner through llvm backend 2022-12-29 10:04:43 -06:00
Ayaz Hafiz
e4b5252e51
List takes interned element 2022-12-29 08:52:37 -06:00