Skip to content

Conversation

@niaow
Copy link
Member

@niaow niaow commented Jun 25, 2020

This saves about a kilobyte of flash, and attempts to address the AVR size increase issue in #1181. Similar to #1181 and the avr-libc allocator, this is a best-fit allocator.

@niaow niaow force-pushed the avr-seperate-gc branch 2 times, most recently from bbc2bf5 to 5abcde9 Compare June 25, 2020 19:06
@niaow niaow added this to the v0.15 milestone Jun 27, 2020
@aykevl
Copy link
Member

aykevl commented Jun 30, 2020

This looks like an interesting small GC. I think it may be useful for more than just the AVR.
Would it be possible to make this a new GC (selectable with -gc=) and let AVR targets default to it? It doesn't look like that should be a lot of work, and it may be useful for other small chips. It would also allow for more flexibility: users might want to try different GCs to see which one suits an application best. For example, the atmega2560 is pretty big and users may want to use a more powerful GC.

@niaow
Copy link
Member Author

niaow commented Jun 30, 2020

Okay I will do that once i finish the other gc.

@niaow niaow removed this from the v0.15 milestone Jul 3, 2020
@deadprogram
Copy link
Member

Did some testing with this branch, and it really works well and saves a lot of size on Arduino Uno.

Current dev branch:

$ tinygo flash -size short -target arduino ./examples/mpu6050/
   code    data     bss |   flash     ram
   4460      70     658 |    4530     728

With this branch:

$ tinygo flash -size short -target arduino ./examples/mpu6050/
   code    data     bss |   flash     ram
   3308      70     658 |    3378     728

Any reason we should not merge it in now, @jaddr2line and @aykevl ?

@niaow
Copy link
Member Author

niaow commented Jul 7, 2020

Yeah, there is still a bit more to do (see aykevl's comment)

@aykevl
Copy link
Member

aykevl commented Jul 8, 2020

Also, I think it's a good idea to rename the conservative GC. Right now it's a bit too broad (all real GCs implemented are conservative). Maybe blocks? Not sure about that, but it's a bitmap and block based heap so it might work.

@deadprogram deadprogram added this to the v0.15 milestone Jul 11, 2020
@niaow
Copy link
Member Author

niaow commented Jul 11, 2020

This seems to have run into issues on cortex-m-qemu claiming a goroutine stack overflow. I don't know whether this means there is an issue with tracking goroutine stacks or something. Using tasks with this works fine on AVR.

@niaow niaow force-pushed the avr-seperate-gc branch from a7773bb to b5dffc8 Compare July 11, 2020 14:03
@niaow
Copy link
Member Author

niaow commented Jul 11, 2020

It seems like the issue was fixed. After rebasing to try to be able to use the stack depth checker, the issue disappeared.

@niaow niaow marked this pull request as draft July 11, 2020 14:11
@niaow
Copy link
Member Author

niaow commented Jul 11, 2020

Nevermind, the issue is still here I just gave a wrong command.

@niaow
Copy link
Member Author

niaow commented Jul 11, 2020

It looks like the allocation of the task frame is being collected.

@niaow
Copy link
Member Author

niaow commented Jul 11, 2020

It was an off-by-one copy-paste error:
image

@niaow niaow marked this pull request as ready for review July 11, 2020 15:22
@niaow niaow requested a review from aykevl July 11, 2020 15:26
@niaow niaow changed the title runtime (gc): use a separate GC for AVR runtime (gc): add lightweight list GC Jul 12, 2020
@aykevl
Copy link
Member

aykevl commented Jul 16, 2020

I tried to use this but I got an error on AVR:

$ tinygo run -target=atmega1284p ./testdata/gc.go
# runtime
/home/ayke/src/github.com/tinygo-org/tinygo/src/runtime/gc_list.go:82:2: undeclared name: markGlobals
/home/ayke/src/github.com/tinygo-org/tinygo/src/runtime/gc_list.go:83:2: undeclared name: markStack

Additionally I tried running go test with the lists GC and got the following error:

qemu-system-arm: terminating on signal 2 from pid 3799 (/tmp/go-build895688022/b001/tinygo.test)
--- FAIL: TestCompiler (0.00s)
    --- FAIL: TestCompiler/EmulatedCortexM3 (0.00s)
        --- FAIL: TestCompiler/EmulatedCortexM3/atomic.go (16.43s)
            main_test.go:221: output did not match
            main_test.go:232: stdout: AddInt32: 3 3
            main_test.go:232: stdout: AddInt64: 3 3
            main_test.go:232: stdout: AddUint32: 13 13
            main_test.go:232: stdout: AddUint64: 13 13
            main_test.go:232: stdout: AddUintptr: 13 13
            main_test.go:232: stdout: SwapInt32: 3 33
            main_test.go:232: stdout: SwapInt64: 3 33
            main_test.go:232: stdout: SwapUint32: 13 33
            main_test.go:232: stdout: SwapUint64: 13 33
            main_test.go:232: stdout: SwapUintptr: 13 33
            main_test.go:232: stdout: SwapPointer: true true
            main_test.go:232: stdout: CompareAndSwapInt32: false -5
            main_test.go:232: stdout: CompareAndSwapInt32: true 3
            main_test.go:232: stdout: fatal error: HardFault with sp=0x20000fcc pc=nil
            main_test.go:232: stdout: --- test ran too long, terminating...

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

The go test definitely works for me. Maybe flush the cache?

Not sure why AVR is broken now, it worked before i pushed the commit. I will try to figure out what broke.

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

No, actually the arduino works for me, it turns out I was just using an older version of the tinygo compiler. You need to go install to get the build tag changes in the compiler.

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

Ok I was able to replicate the atomic hardfault and will look into it.

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

Okay so I think figured it out now. Apparently we are generating a ldrexd instruction somehow, which from what I can tell is not supported on cortex-m3.

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

This isn't 8-byte aligned now with this memory manager. I attempted to fix this by adjusting the GC to use the alignment of a uint64. . . but the alignment is actually 8-bytes and this is correct because cortex-m3 does not have that instruction. It seems that QEMU does not replicate this accurately, and runs the instruction anyway. Basically, we are hitting an alignment error in an unsupported instruction. . .

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

This should not have ever worked.

@aykevl
Copy link
Member

aykevl commented Jul 16, 2020

You need to go install to get the build tag changes in the compiler.

Ah thanks, that's it. Now it works for me (sort of):

$ tinygo run -target=atmega1284p ./testdata/gc.go
Loaded 2730 .text at address 0x0
Loaded 118 .data
panic: runtime error: out of memory..

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

Yeah I think i broke some stuff when generalizing. . .

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

Wait no everything is working testdata/gc.go just uses too much memory for AVR. That OOMs on the other collector too.

edit: actually why is this happening

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

Ok no the false positive rate is just really really bad.

start GC..
0x30c4 referenced by root..
0x2079 referenced by root..
0x216e referenced by root..
0x3a63 referenced by root..
0x203a referenced by root..
0x2066 referenced by root..
0x1600 referenced by root..
0x2fb9 referenced by root..
0x3e93 referenced by root..
0x073e referenced by root..
0x0700 referenced by root..
0x40cf referenced by root..
0x0640 referenced by root..
0x0600 referenced by root..
0x3f18 referenced by root..
0x223f referenced by root..
0x2200 referenced by root..
0x4064 referenced by root..
0x2300 referenced by root..
0x2b41 referenced by root..
0x3dc8 referenced by root..
0x3d00 referenced by root..
0x373d referenced by root..
0x4004 referenced by root..
0x094e referenced by 0x0910..
0x1f53 referenced by 0x1f3c..
0x10b3 referenced by 0x107a..
0x0651 referenced by 0x0643..
0x1655 referenced by 0x161c..
0x1fc4 referenced by 0x1fa4..
0x1820 referenced by 0x17fd..
0x1c4d referenced by 0x1c48..
0x051c referenced by 0x04f1..
0x2c00 referenced by 0x2be7..
0x1b75 referenced by 0x1b58..
0x2797 referenced by 0x2778..
0x2587 referenced by 0x2574..
0x2aa8 referenced by 0x2aa4..
0x26ba referenced by 0x26a7..
0x2426 referenced by 0x23f9..
0x2524 referenced by 0x24f2..
0x0cca referenced by 0x0cae..
0x1e0c referenced by 0x1dff..
0x25ba referenced by 0x259f..
0x39b9 referenced by 0x39ab..
0x3771 referenced by 0x3752..
0x2d6d referenced by 0x2d54..
0x27de referenced by 0x27c0..
0x2ce8 referenced by 0x2cde..
0x2df7 referenced by 0x2dcf..
0x15ad referenced by 0x15a3..
0x10f0 referenced by 0x10ca..
0x3c10 referenced by 0x3bf4..
0x103c referenced by 0x1038..
0x1a9d referenced by 0x1a7a..
0x351a referenced by 0x34f7..
0x32c3 referenced by 0x32b6..
0x3832 referenced by 0x3811..
0x1e81 referenced by 0x1e60..
0x1d94 referenced by 0x1d76..
0x179b referenced by 0x1784..
0x0d17 referenced by 0x0ce8..
0x3ed0 referenced by 0x3eb9..
0x0496 referenced by 0x047b..
0x24b6 referenced by 0x24b2..
0x2e5b referenced by 0x2e42..
0x0ef6 referenced by 0x0ef0..
0x0555 referenced by 0x052e..
0x1456 referenced by 0x143c..
0x364f referenced by 0x3623..
0x3874 referenced by 0x386f..
0x2dca referenced by 0x2dc3..
0x2659 referenced by 0x2643..
0x34a1 referenced by 0x348f..
0x2001 referenced by 0x1ffd..
0x0eb3 referenced by 0x0e77..
0x090e referenced by 0x08f7..
0x1309 referenced by 0x12f2..
0x0acc referenced by 0x0a9d..
0x31ca referenced by 0x31c5..
0x2131 referenced by 0x2127..
0x15c8 referenced by 0x15bf..
0x129b referenced by 0x1291..
0x26a1 referenced by 0x2679..
0x19a5 referenced by 0x197c..
0x396e referenced by 0x3951..
0x18eb referenced by 0x18dd..
0x1cbb referenced by 0x1c97..
0x2f67 referenced by 0x2f3c..
0x2d7b referenced by 0x2d74..
0x352d referenced by 0x3526..
0x2c70 referenced by 0x2c4b..
0x1976 referenced by 0x1943..
0x0a19 referenced by 0x09fe..
0x20ac referenced by 0x20a6..
0x1427 referenced by 0x1411..
0x2614 referenced by 0x25fc..
0x3ef0 referenced by 0x3ee0..
0x0d4b referenced by 0x0d29..
0x09ba referenced by 0x09a1..
0x058e referenced by 0x055b..
0x2920 referenced by 0x290a..
0x2bbb referenced by 0x2bb1..
0x322b referenced by 0x3223..
0x18b6 referenced by 0x1899..
0x17be referenced by 0x17ba..
0x2e17 referenced by 0x2e06..
0x1000 referenced by 0x0ff5..
0x334a referenced by 0x3339..
0x2ba2 referenced by 0x2b8b..
0x3b2b referenced by 0x3b14..
0x1750 referenced by 0x172f..
0x29c4 referenced by 0x29ba..
0x3131 referenced by 0x30fa..
0x3031 referenced by 0x3006..
0x1930 referenced by 0x1919..
0x0e04 referenced by 0x0de5..
0x3f84 referenced by 0x3f78..
0x0ec2 referenced by 0x0eb7..
0x0c63 referenced by 0x0c4b..
0x1327 referenced by 0x1315..
0x3604 referenced by 0x35d9..
0x0b36 referenced by 0x0b13..
0x4086 referenced by 0x4066..
0x3564 referenced by 0x353b..
0x3caf referenced by 0x3c77..
0x1845 referenced by 0x182d..
0x0957 referenced by 0x0951..
0x1d09 referenced by 0x1cfe..
0x332e referenced by 0x3319..
0x1a6b referenced by 0x1a38..
0x3d70 referenced by 0x3d63..
0x06dd referenced by 0x06d2..
0x3efd referenced by 0x3ef6..
0x2a60 referenced by 0x2a52..
0x1562 referenced by 0x1543..
0x08e8 referenced by 0x08c5..
0x2566 referenced by 0x2532..
0x2afd referenced by 0x2ad8..
0x23ac referenced by 0x239e..
0x0eee referenced by 0x0ed4..
0x280e referenced by 0x2802..
0x2271 referenced by 0x2251..
0x0f85 referenced by 0x0f6b..
0x0a52 referenced by 0x0a23..
0x1bfe referenced by 0x1bf3..
0x139b referenced by 0x1378..
0x3eb5 referenced by 0x3e9a..
0x0b0b referenced by 0x0ad0..
0x3184 referenced by 0x316b..
0x188a referenced by 0x1874..
0x3e18 referenced by 0x3e0f..
0x3b3e referenced by 0x3b38..
0x358e referenced by 0x356c..
0x079c referenced by 0x078b..
0x21ac referenced by 0x217e..
0x2d21 referenced by 0x2d12..
0x38f7 referenced by 0x38d3..
0x1af1 referenced by 0x1ac2..
0x29e8 referenced by 0x29c6..
0x344c referenced by 0x3440..
0x1364 referenced by 0x135c..
0x34bd referenced by 0x34b2..
0x3142 referenced by 0x3136..
0x0879 referenced by 0x0863..
0x1ed9 referenced by 0x1eb4..
0x0ce4 referenced by 0x0ccd..
0x1170 referenced by 0x1166..
0x326e referenced by 0x325e..
0x0f40 referenced by 0x0f2e..
0x378f referenced by 0x3773..
0x1144 referenced by 0x1130..
0x1a11 referenced by 0x19eb..
0x238b referenced by 0x237f..
0x210a referenced by 0x20ff..
0x1121 referenced by 0x1106..
0x2770 referenced by 0x273d..
0x19d6 referenced by 0x19bd..
0x3851 referenced by 0x383e..
0x3d7a referenced by 0x3d71..
0x2a05 referenced by 0x29fd..
0x30ae referenced by 0x3091..
0x3c1b referenced by 0x3c15..
0x14d0 referenced by 0x14ca..
0x1c3d referenced by 0x1c23..
0x320d referenced by 0x31f4..
0x33d0 referenced by 0x33c4..
0x0fd9 referenced by 0x0fba..
0x3ba3 referenced by 0x3b72..
0x1400 referenced by 0x13de..
0x0698 referenced by 0x0674..
0x305e referenced by 0x3038..
0x11c8 referenced by 0x11a4..
0x20f3 referenced by 0x20d9..
0x3fa3 referenced by 0x3f92..
0x2b83 referenced by 0x2b5e..
0x29a8 referenced by 0x299b..
0x21c2 referenced by 0x21b8..
0x1f18 referenced by 0x1f04..
0x3c3d referenced by 0x3c38..
0x2daf referenced by 0x2d92..
0x1200 referenced by 0x11f4..
0x327e referenced by 0x3277..
0x0bce referenced by 0x0bb5..
0x3160 referenced by 0x3144..
0x096f referenced by 0x0966..
0x1b09 referenced by 0x1af4..
0x2c48 referenced by 0x2c26..
0x2ca5 referenced by 0x2c84..
0x16ab referenced by 0x1675..
0x1bf2 referenced by 0x1bea..
0x16b6 referenced by 0x16ac..
0x28ea referenced by 0x28bc..
0x0dde referenced by 0x0daf..
0x36d0 referenced by 0x36c7..
0x31ac referenced by 0x31a7..
0x2858 referenced by 0x2835..
0x3cdd referenced by 0x3cb4..
0x2fcd referenced by 0x2fc4..
0x0850 referenced by 0x0844..
0x2ea4 referenced by 0x2ea0..
0x2335 referenced by 0x232e..
0x1fa3 referenced by 0x1f76..
0x1284 referenced by 0x1279..
0x186f referenced by 0x184e..
0x256f referenced by 0x2568..
0x3ac2 referenced by 0x3ab6..
0x3751 referenced by 0x3743..
0x3e00 referenced by 0x3dd8..
0x39f4 referenced by 0x39e1..
0x07fb referenced by 0x07eb..
0x2f12 referenced by 0x2f05..
0x3461 referenced by 0x345b..
0x1da5 referenced by 0x1d97..
0x3196 referenced by 0x318e..
0x3f4f referenced by 0x3f3a..
0x1d5b referenced by 0x1d38..
0x341e referenced by 0x3415..
0x0c97 referenced by 0x0c84..
0x077b referenced by 0x073f..
0x2eef referenced by 0x2ec7..
0x30f3 referenced by 0x30ed..
0x0d97 referenced by 0x0d8d..
0x07d1 referenced by 0x07b0..
0x3c76 referenced by 0x3c70..
0x2293 referenced by 0x228c..
0x125b referenced by 0x1238..
0x2735 referenced by 0x2713..
0x3da2 referenced by 0x3d85..
0x3243 referenced by 0x3233..
0x14ab referenced by 0x14a4..
0x3e7f referenced by 0x3e54..
0x1cc7 referenced by 0x1cbf..
0x33fd referenced by 0x33ee..
0x25f2 referenced by 0x25c5..
0x080e referenced by 0x0807..
0x3939 referenced by 0x3923..
0x0b90 referenced by 0x0b7d..
0x243f referenced by 0x243a..
0x165f referenced by 0x1658..
0x149c referenced by 0x1491..
0x1504 referenced by 0x14ee..
0x071f referenced by 0x0717..
0x366d referenced by 0x3660..
0x04e2 referenced by 0x04b3..
0x38a2 referenced by 0x389a..
0x27a2 referenced by 0x279a..
0x0a83 referenced by 0x0a60..
0x2b0a referenced by 0x2b02..
0x05e5 referenced by 0x05c9..
0x1e1e referenced by 0x1e18..
0x151e referenced by 0x1518..
0x3479 referenced by 0x346a..
0x337b referenced by 0x3352..
0x1b54 referenced by 0x1b37..
0x05b2 referenced by 0x059d..
0x1be1 referenced by 0x1bbd..
0x2889 referenced by 0x2873..
0x0c28 referenced by 0x0c21..
0x1e5a referenced by 0x1e55..
0x236d referenced by 0x235b..
0x3940 referenced by 0x393c..
0x2ef6 referenced by 0x2ef1..
0x23d7 referenced by 0x23be..
0x2f23 referenced by 0x2f18..
0x2e94 referenced by 0x2e90..
0x32f9 referenced by 0x32d6..
0x0632 referenced by 0x060d..
0x2945 referenced by 0x292b..
0x158b referenced by 0x1566..
0x3a96 referenced by 0x3a8c..
0x06a5 referenced by 0x069e..
0x13b7 referenced by 0x13af..
0x33ba referenced by 0x339d..
0x12d3 referenced by 0x12cb..
0x1d31 referenced by 0x1d22..
0x0c0a referenced by 0x0bef..
0x215f referenced by 0x2157..
0x1de3 referenced by 0x1dd9..
0x2984 referenced by 0x296c..
0x370b referenced by 0x3707..
0x0b6f referenced by 0x0b67..
0x0d6f referenced by 0x0d63..
0x3bc8 referenced by 0x3ba5..
0x3ae3 referenced by 0x3adf..
0x35cc referenced by 0x35c0..
0x16ca referenced by 0x16c0..
0x38d0 referenced by 0x38c4..
0x263c referenced by 0x2621..
0x1777 referenced by 0x176d..
0x1700 referenced by 0x16f4..
0x37d1 referenced by 0x37ab..
0x2f90 referenced by 0x2f83..
0x0e2f referenced by 0x0e1e..
0x1c85 referenced by 0x1c64..
0x2b5a referenced by 0x2b50..
0x248a referenced by 0x2463..
0x3a76 referenced by 0x3a70..
0x3fce referenced by 0x3fc3..
0x306a referenced by 0x3063..
0x399d referenced by 0x3987..
0x0e70 referenced by 0x0e5c..
0x1f00 referenced by 0x1ee4..
0x22ab referenced by 0x229a..
0x11ed referenced by 0x11d5..
0x1a2b referenced by 0x1a22..
0x2396 referenced by 0x238e..
0x2fe6 referenced by 0x2fd7..
0x082f referenced by 0x081c..
0x36a6 referenced by 0x36a2..
0x3d44 referenced by 0x3d1e..
0x1348 referenced by 0x133f..
0x26e6 referenced by 0x26d4..
0x1ff2 referenced by 0x1fe6..
0x08bc referenced by 0x0893..
0x3b11 referenced by 0x3aff..
0x2a99 referenced by 0x2a92..
0x2e40 referenced by 0x2e36..
0x34de referenced by 0x34d7..
0x1717 referenced by 0x1705..
0x28b7 referenced by 0x2899..
0x3d58 referenced by 0x3d46..
0x2904 referenced by 0x28fb..
0x3801 referenced by 0x37e8..
0x3920 referenced by 0x3912..
0x22bb referenced by 0x22af..
0x3e4f referenced by 0x3e4b..
0x0e52 referenced by 0x0e4b..
0x24e6 referenced by 0x24d8..
0x066b referenced by 0x065c..
0x04ef referenced by 0x04e5..
0x126c referenced by 0x1267..
0x10bd referenced by 0x10b8..
0x0a22 referenced by 0x0a1a..
0x1baf referenced by 0x1b9c..
0x18dc referenced by 0x18ca..
0x35b8 referenced by 0x35ac..
0x361d referenced by 0x3618..
0x0474 referenced by 0x0467..
0x0fb0 referenced by 0x0f9e..
0x0e48 referenced by 0x0e41..
0x1530 referenced by 0x1527..
0x09ee referenced by 0x09d5..
0x140f referenced by 0x1403..
0x3fbd referenced by 0x3fb7..
0x37a8 referenced by 0x37a2..
0x3bf1 referenced by 0x3be7..
0x1b98 referenced by 0x1b8b..
0x0b5e referenced by 0x0b4f..
0x0842 referenced by 0x083a..
0x2fd6 referenced by 0x2fd1..
0x3312 referenced by 0x330d..
0x2e87 referenced by 0x2e80..
0x30e7 referenced by 0x30d4..
0x3391 referenced by 0x337f..
0x2701 referenced by 0x26fc..
0x23ea referenced by 0x23de..
0x227b referenced by 0x2272..
0x12ef referenced by 0x12e2..

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

With 16 KiB you should really be expecting like a 25% false positive rate, but it only needs to happen once so it is actually well past a 90% false positive pinning rate.

@niaow
Copy link
Member Author

niaow commented Jul 16, 2020

Basically, any byte less than 64 with another byte after it points into the heap. . .

@niaow
Copy link
Member Author

niaow commented Jul 18, 2020

Okay it looks like I am going to be turning this into a precise GC instead

@deadprogram
Copy link
Member

Just looking at this PR again. What is the status with it @niaow ?

@niaow
Copy link
Member Author

niaow commented Aug 25, 2020

It works on ARM, but on AVR the false positive rate is too high for it to be usable. I started turning it into a precise collector but have not had much time to work on it.

@niaow
Copy link
Member Author

niaow commented Nov 1, 2020

ok i pushed what i have of the precise gc

@deadprogram
Copy link
Member

AppVeyor was unable to build non-mergeable pull request

Looks like the conflicts have to be resolved to run CI on Windows.

@aykevl
Copy link
Member

aykevl commented Nov 1, 2020

Huh that's strange. We're not using AppVeyor. But I did try using that service in the past and don't think I ever disabled it, so maybe it needs to be disabled.

But I agree, this PR needs to be rebased on the dev branch.

@niaow
Copy link
Member Author

niaow commented Nov 2, 2020

But I agree, this PR needs to be rebased on the dev branch.

I was planning to wait until this got a bit further along, but I guess I can do that sooner.

Looks like the conflicts have to be resolved to run CI on Windows.

This PR isn't actually close to ready - this currently causes LLVM's DCE pass to crash under many conditions.

@niaow niaow force-pushed the avr-seperate-gc branch 2 times, most recently from ec238c6 to ada4e12 Compare November 6, 2020 00:55
@niaow
Copy link
Member Author

niaow commented Nov 6, 2020

After this most recent commit, a large amount of code is able to build without needing scannable allocations.

@niaow
Copy link
Member Author

niaow commented Nov 6, 2020

Hmm. . . so i changed malloc to return untyped memory, and now I see that will probably break things.

@niaow niaow force-pushed the avr-seperate-gc branch 2 times, most recently from 635e57d to 110a94c Compare November 8, 2020 17:48
@niaow
Copy link
Member Author

niaow commented Nov 8, 2020

@aykevl I think this is finally actually ready for review.

@niaow
Copy link
Member Author

niaow commented Nov 14, 2020

The CI failures appear to be unrelated. . .

@niaow
Copy link
Member Author

niaow commented Jan 1, 2021

I should probably rebase this. . .

@niaow
Copy link
Member Author

niaow commented Jan 2, 2021

After rebasing there seems to be a miscompile/UB of testdata/gc.go on AVR. I have not yet figured it out yet, but it is broken (and works on some optimization levels for reasons which have yet to be explained).

@niaow
Copy link
Member Author

niaow commented Jul 17, 2021

Finally getting back around to this. I think I am going to split this PR so that we can merge the lists GC first and then add the precise collector work after. This is a bit too big.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants