nintendoswitch: scan globals conservatively
This is a step towards #2870, similar to #2867 and #2869.
Этот коммит содержится в:
родитель
3dd502a928
коммит
ea3b5dc689
2 изменённых файлов: 27 добавлений и 2 удалений
|
@ -1,5 +1,5 @@
|
||||||
//go:build gc.conservative && !baremetal && !darwin && !tinygo.wasm && !windows
|
//go:build gc.conservative && !baremetal && !darwin && !nintendoswitch && !tinygo.wasm && !windows
|
||||||
// +build gc.conservative,!baremetal,!darwin,!tinygo.wasm,!windows
|
// +build gc.conservative,!baremetal,!darwin,!nintendoswitch,!tinygo.wasm,!windows
|
||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
|
|
|
@ -233,6 +233,31 @@ func getHeapEnd() uintptr {
|
||||||
return heapEnd
|
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
|
// getContextPtr returns the hblauncher context
|
||||||
// this is externally linked by gonx
|
// this is externally linked by gonx
|
||||||
func getContextPtr() uintptr {
|
func getContextPtr() uintptr {
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче