nintendoswitch: scan globals conservatively

This is a step towards #2870, similar to #2867 and #2869.
Этот коммит содержится в:
Ayke van Laethem 2022-05-29 00:57:06 +02:00 коммит произвёл Ron Evans
родитель 3dd502a928
коммит ea3b5dc689
2 изменённых файлов: 27 добавлений и 2 удалений

Просмотреть файл

@ -1,5 +1,5 @@
//go:build gc.conservative && !baremetal && !darwin && !tinygo.wasm && !windows
// +build gc.conservative,!baremetal,!darwin,!tinygo.wasm,!windows
//go:build gc.conservative && !baremetal && !darwin && !nintendoswitch && !tinygo.wasm && !windows
// +build gc.conservative,!baremetal,!darwin,!nintendoswitch,!tinygo.wasm,!windows
package runtime

Просмотреть файл

@ -233,6 +233,31 @@ func getHeapEnd() uintptr {
return heapEnd
}
//go:extern __data_start
var dataStartSymbol [0]byte
//go:extern __data_end
var dataEndSymbol [0]byte
//go:extern __bss_start
var bssStartSymbol [0]byte
//go:extern __bss_end
var bssEndSymbol [0]byte
// Mark global variables.
// The linker script provides __*_start and __*_end symbols that can be used to
// scan the given sections. They are already aligned so don't need to be
// manually aligned here.
func markGlobals() {
dataStart := uintptr(unsafe.Pointer(&dataStartSymbol))
dataEnd := uintptr(unsafe.Pointer(&dataEndSymbol))
markRoots(dataStart, dataEnd)
bssStart := uintptr(unsafe.Pointer(&bssStartSymbol))
bssEnd := uintptr(unsafe.Pointer(&bssEndSymbol))
markRoots(bssStart, bssEnd)
}
// getContextPtr returns the hblauncher context
// this is externally linked by gonx
func getContextPtr() uintptr {