mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-14 16:03:41 +00:00
runtime: refactor markGlobals to findGlobals
Instead of markGlobals calling markRoots unconditionally (which doesn't
make sense for -gc=none and -gc=leaking), provide markRoots as a
callback function.
This is in preparation for -gc=boehm, where the previous design is even
more awkward and a callback makes far more sense.
I've tested the size impact using `make smoketest XTENSA=0`. There is
none, except for two cases:
* One with `-opt=0` so const-propagation for the callback didn't take
place.
* One other on AVR, I don't know why but as it's only 16 bytes in a
very specific case I'm going to assume it's just a random change in
compiler output that caused a size difference.
This commit is contained in:
committed by
Ron Evans
parent
dc449882ad
commit
4643401a1d
@@ -420,7 +420,7 @@ func runGC() (freeBytes uintptr) {
|
||||
|
||||
// Mark phase: mark all reachable objects, recursively.
|
||||
markStack()
|
||||
markGlobals()
|
||||
findGlobals(markRoots)
|
||||
|
||||
if baremetal && hasScheduler {
|
||||
// Channel operations in interrupts may move task pointers around while we are marking.
|
||||
|
||||
Reference in New Issue
Block a user