mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-17 19:23:25 +00:00
avr: use precise GC by default
AVR is especially sensitive to false positives in the GC for a few
reasons:
* Pointer values are only two bytes, instead of four on most other
microcontrollers.
* Pointers are not aligned, so any two-byte value in an object coud be
a pointer.
* Memory typically starts at a low address, which makes it much more
likely to clash with a regular integer value (which tend to be small
values).
Therefore, use the precise GC (instead of the conservative GC) by
default. This increases binary size by around 350 bytes, but I think
it's a good tradeoff in most cases: it avoids some runtime errors and
generally RAM tends to be a lot more scarce than flash on AVR chips. If
this is too much, `-gc=conservative` or `-gc=leaking` can be used
instead.
This commit is contained in:
@@ -210,10 +210,6 @@ func runPlatTests(options compileopts.Options, tests []string, t *testing.T) {
|
||||
// limited amount of memory.
|
||||
continue
|
||||
|
||||
case "gc.go":
|
||||
// Does not pass due to high mark false positive rate.
|
||||
continue
|
||||
|
||||
case "json.go", "stdlib.go", "testing.go":
|
||||
// Too big for AVR. Doesn't fit in flash/RAM.
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user