Ayaz Hafiz
55fa8098d3
add a todo impl
2023-07-12 14:17:58 -05:00
Ayaz Hafiz
63db2c0eea
Add erased layout
2023-07-12 14:17:57 -05:00
Ayaz Hafiz
510a421748
Call erased functions
2023-07-12 14:14:25 -05:00
Ayaz Hafiz
558d7459b4
Fix merge conflicts
2023-07-12 14:14:25 -05:00
Ayaz Hafiz
929579d51d
Fix
2023-07-12 14:14:25 -05:00
Ayaz Hafiz
a6bb3ab03c
Get started on calling erased functions
2023-07-12 14:14:25 -05:00
Ayaz Hafiz
6312d75ee0
Add FunctionPointer layout
2023-07-12 13:59:50 -05:00
Ayaz Hafiz
a9e3f967a8
First pass at erased function layouts
2023-07-12 13:57:19 -05:00
Ayaz Hafiz
6e5a308557
Content variant ErasedLambda
2023-07-12 13:57:17 -05:00
Ayaz Hafiz
c459757062
Thread simple model of "ErasedLambdas" through proc layouts
...
But none of these paths are yet exercised.
2023-07-12 13:53:52 -05:00
Ayaz Hafiz
6eae480e36
Check in first erasure test
2023-07-12 13:53:52 -05:00
Ayaz Hafiz
16ebcba053
Use index
2023-07-12 13:53:51 -05:00
Ayaz Hafiz
6014370b91
Initial support for erasure in tests
2023-07-12 13:53:51 -05:00
Ayaz Hafiz
15ae7489a8
Unify erased lambda sets
2023-07-12 13:53:51 -05:00
Ayaz Hafiz
1d6f0d3d3f
Instantiate erased lambdas
2023-07-12 13:53:51 -05:00
Ayaz Hafiz
fb4c550a29
Erased symbol
2023-07-12 13:53:51 -05:00
Ayaz Hafiz
33b1b8236a
Break up SolveEnv
2023-07-12 13:53:51 -05:00
Ayaz Hafiz
15eef74a83
Shove more into a common env
2023-07-12 13:53:51 -05:00
Ayaz Hafiz
f8e377a055
Break up solve/solve into smaller modules
2023-07-12 13:53:50 -05:00
Ayaz Hafiz
44c4797d9a
Parameterize program solving on a FunctionKind
...
This new flag determines whether we should introduce a new kind to
represent lambda sets, or whether lambdas should be erased. The latter
is not yet implemented.
2023-07-12 13:53:50 -05:00
Ayaz Hafiz
60c98ea5d5
Stray clippy ignore
2023-07-12 13:53:50 -05:00
Folkert de Vries
ac25eef443
Merge pull request #5657 from roc-lang/drop-specialize-tail-recursive
...
use explicit stack to prevent stack overflow in drop specialization
2023-07-12 19:04:28 +02:00
Folkert
a50f013fce
cleanup after review
2023-07-12 17:55:21 +02:00
Richard Feldman
1d5c5b25ec
Merge remote-tracking branch 'origin/main' into linux64
2023-07-11 11:33:31 -04:00
Richard Feldman
19fc7775c7
Merge pull request #5644 from roc-lang/aarch64-code-model-fix
...
aarch64 linux error fix
2023-07-11 11:22:57 -04:00
Anton-4
b92bc4922e
segfault codemodel workaround
2023-07-11 16:18:22 +02:00
Folkert
da9482b7fa
inline pattern match
2023-07-10 21:17:58 +02:00
Folkert
8c666edbec
use explicit stack to prevent stack overflow in drop specialization
2023-07-10 21:14:30 +02:00
Folkert
2d616d1fe9
manual clippy fixes
2023-07-10 18:27:10 +02:00
Folkert
ef39bad7c6
auto clippy fixes
2023-07-10 18:27:08 +02:00
Anton-4
72c85efc83
switch to rust 1.67
2023-07-10 18:25:52 +02:00
Richard Feldman
b2ce9d1cc6
Merge pull request #5481 from wontem/fix_pizza
...
Fix desugar step for pizza operator
2023-07-10 09:46:35 -04:00
Folkert
6a19009acf
32-bit float mov instruction
2023-07-09 15:47:29 +02:00
Folkert
bb97c384bb
preserve semantics in the glue generation
2023-07-09 15:47:28 +02:00
Folkert
6d2d65bb1e
remove Boxed layout
2023-07-09 15:47:28 +02:00
Folkert
d64930c17f
remove box and unbox expressions
2023-07-09 15:47:28 +02:00
Folkert
a9813aeae7
use a NonNullableUnwrapped union for Box
2023-07-09 15:47:27 +02:00
Anton-4
03af6749ed
fmt
2023-07-05 19:39:20 +02:00
Anton-4
781fba8f73
aarch64 linux error fix
...
This fixes the error relocation R_AARCH64_MOVW_UABS_G0_NC cannot be used against local symbol
2023-07-05 19:34:00 +02:00
Kiryl Dziamura
6265aee033
Merge branch 'main' into fix_pizza
2023-07-04 15:31:57 +02:00
Kiryl Dziamura
1bb3c3d1dd
Make has
have 4 identation spaces
2023-07-04 11:24:40 +02:00
Kiryl Dziamura
c90c399751
Test closure definition with parens around
2023-07-04 10:24:09 +02:00
Kiryl Dziamura
3ccb6114b2
Unwrap expr in loop
2023-07-04 10:16:21 +02:00
Kiryl Dziamura
29592ddb9b
Drop parens during body canonicalization
2023-07-04 10:16:21 +02:00
Kiryl Dziamura
6031c0cc9f
Fix desugar step for pizza operator
2023-07-04 10:16:20 +02:00
Joshua Warner
654248ad47
Allow spaces before and after the colon in the packages
header section
...
Fixes #4902
2023-07-03 15:46:50 -07:00
Ayaz
f2e013a4e0
Merge pull request #5628 from roc-lang/i5617
...
Do not drop uninhabited captures from lambda sets
2023-07-01 13:15:14 -05:00
Folkert
3b18494ddd
use Ptr instead of Boxed in the code-gen-help
2023-06-30 15:57:33 +02:00
Ayaz
cde3615ec2
Merge pull request #5627 from roc-lang/cleanup-file-rs
...
Extract some modules out of file.rs
2023-06-29 17:49:41 -05:00
Ayaz Hafiz
a5e1558a6e
Do not drop uninhabited captures from lambda sets
...
Previously, we would drop uninhabited captures from lambda sets' runtime
representations, which meant sets like
```
[L1 {a: Str}, L2 {a: []}]
```
had runtime representation
```
{Str}
```
rather than
```
Union({Str}, {[]})
```
if we drop unreachable lambdas from the representation, then the
reachable lambdas are somewhat more efficient to compile (as there are
less material tag options), but the compiler complexity increases
because we must represent voided capture sets in the lambda set.
Even if a lambda has voided captures, we must specialize it, because
failing to do so opens us up to losing relevant specializations needed
later on. See 2f7020aa31
for a
previous occurence of that.
As such, simply keep voided layouts in place during lambda set
compilation. The optimizer should elide them anyway.
2023-06-29 17:32:50 -05:00