Folkert
c0d67edfd3
cleanup
2023-10-09 15:40:28 +02:00
Folkert
b39c592bea
realize all list elements on the stack before writing to the list
2023-10-09 15:24:46 +02:00
Folkert
9118eeac0c
store registers at negative offset vs. the base pointer
2023-10-09 15:24:45 +02:00
Folkert
5368c145cd
make stack cleanup symmetric
...
we were doing things relative to the base pointer, but it got moved back to the caller's base pointer before use. this caused stack corruption
2023-10-09 15:24:45 +02:00
Folkert
7c67f8aafb
some debugging logs
2023-10-09 15:24:45 +02:00
Folkert
be2c31fe91
more detail
2023-10-09 15:24:44 +02:00
Folkert
ef64e37b9b
use stdlib functions instead of intrinsics
2023-10-09 15:24:44 +02:00
Folkert
be81651299
fix valgrind issue in roc_std
2023-10-09 15:24:44 +02:00
Folkert
a4e314593f
actually do not pass the shadow space size
2023-10-09 15:24:43 +02:00
Folkert
c2216dfc9f
the actual fix
2023-10-09 15:24:43 +02:00
Folkert
734cfe9bce
fix how registers are stored/loaded before a function call
2023-10-09 15:24:43 +02:00
Folkert
6510591b60
fix the order
2023-10-09 15:24:42 +02:00
Folkert
ae4df42eab
another attempt
2023-10-09 15:24:42 +02:00
Folkert
968fc04d93
an attempt
2023-10-09 15:24:42 +02:00
Folkert
11bd8445b2
load stack arguments from the right location
2023-10-09 15:24:41 +02:00
Folkert
46e8328056
add test that exhausts argument registers
2023-10-09 15:24:41 +02:00
Folkert
a03772d5cc
use x15 (and not x8) as a temp register
2023-10-09 15:24:41 +02:00
Folkert
1db7a8f2a5
simplify boolean not
2023-10-09 15:24:40 +02:00
Folkert
f39992bd8d
big base offsets
2023-10-09 15:24:40 +02:00
Folkert
aa261c4437
dev backend: correct bounds on negative jumps
2023-10-09 15:24:40 +02:00
Folkert
c749efb64c
properly return a value
...
on aarch64, returning a big value does not happen with a pointer passed as the first argument (x0). The pointer is passed in the return register (x8) instead. Just use a zig return to generate the right code in both cases
2023-10-09 15:24:39 +02:00
Folkert
ea5632c437
pass missing argument to utf8_range
2023-10-09 15:24:39 +02:00
Folkert
a8214f2d06
remove extra dereference
2023-10-09 15:24:39 +02:00
Luke Boswell
b925e6e0bc
fix dev backend symbol name length
2023-10-09 15:24:38 +02:00
Luke Boswell
6fe3a9f927
fix gen_large_when_int aarch64
2023-10-09 15:24:38 +02:00
Agus Zubiaga
b9c003afc6
Format object_builder
2023-10-09 15:24:38 +02:00
Agus Zubiaga
11ca6dca94
Add gen_compare and gen_tags to aarch CI tests
2023-10-09 15:24:37 +02:00
Agus Zubiaga
ad127eb395
Add undefined rc procs for LinkedData too
2023-10-09 15:24:37 +02:00
Luke Boswell
99369dec85
implement roc_panic aarch64
2023-10-09 15:24:37 +02:00
Luke Boswell
04867dc2ea
fix pass_bool_record aarch dev backend
2023-10-09 15:24:36 +02:00
Luke Boswell
7de2915fb7
WIP setjmp longjmp roc_panic aarch64 dev
2023-10-09 15:24:36 +02:00
Luke Boswell
f1e049ddc9
fix aarch macos relocation for LinkedData
2023-10-09 15:24:36 +02:00
Folkert
8414e18ffb
attach 12-bit relocation to the addition instruction
2023-10-09 15:24:35 +02:00
Folkert
e1f173fb95
fix missing data ptr relocation for aarch64
2023-10-09 15:24:35 +02:00
Folkert
82b96395e2
fix argument passing for systemv
2023-10-09 15:24:35 +02:00
Folkert
42d324299d
fix bug in copying small bits of data (e.g. 3 bytes)
2023-10-09 15:24:34 +02:00
Folkert
66db1ce206
clippy fixes
2023-10-09 15:24:34 +02:00
Agus Zubiaga
27aab8b69a
Use X15 instead of requesting general reg
2023-10-09 15:24:34 +02:00
Agus Zubiaga
1021423e69
Use reg from StorageManager instead of XR while loading args
...
When a function returns via arg pointer, the caller sets XR (x8) to
the address where the return value goes. We were sometimes using XR
as a temporary register while loading args, which lead to a segfault
when returning.
It will now request a general available register from StorageManager
instead.
2023-10-09 15:24:33 +02:00
Folkert
905dc8cd59
pass small non-recursive tag unions via registers (like records)
2023-10-09 15:24:33 +02:00
Folkert
68dc7108bf
enable all gen_result tests for the dev backend
2023-10-09 15:24:32 +02:00
Folkert
5f9008fbcc
on x86 (systemv, haven't checked windows) pass small structs via registers
2023-10-09 15:24:32 +02:00
Folkert
052ee0cc5f
more boxing tests
2023-10-09 15:24:32 +02:00
Folkert
b410ae5642
fix arithmetic error in copy function
2023-10-09 15:24:31 +02:00
Folkert
6442dc2a94
use the proper temporary register
2023-10-09 15:24:31 +02:00
Folkert
9bf5bd4d39
128-bit structs, properly
2023-10-09 15:24:31 +02:00
Folkert
3a8d4b853b
an attempt at passing bigger values
2023-10-09 15:24:30 +02:00
Folkert
529703d449
fix data pointers
2023-10-09 15:24:30 +02:00
Folkert
ce34d5826b
on aarch64, unify data and function pointers
2023-10-09 15:24:30 +02:00
Folkert
311ae4c7a6
an attempt at function pointers
2023-10-09 15:24:29 +02:00