runtime: add some more asserts to the GC
Этот коммит содержится в:
родитель
6917faabf5
коммит
3bf2487dc5
1 изменённых файлов: 8 добавлений и 0 удалений
|
@ -93,6 +93,9 @@ type gcBlock uintptr
|
|||
// blockFromAddr returns a block given an address somewhere in the heap (which
|
||||
// might not be heap-aligned).
|
||||
func blockFromAddr(addr uintptr) gcBlock {
|
||||
if gcAsserts && (addr < poolStart || addr >= heapEnd) {
|
||||
runtimePanic("gc: trying to get block from invalid address")
|
||||
}
|
||||
return gcBlock((addr - poolStart) / bytesPerBlock)
|
||||
}
|
||||
|
||||
|
@ -113,6 +116,11 @@ func (b gcBlock) findHead() gcBlock {
|
|||
for b.state() == blockStateTail {
|
||||
b--
|
||||
}
|
||||
if gcAsserts {
|
||||
if b.state() != blockStateHead && b.state() != blockStateMark {
|
||||
runtimePanic("gc: found tail without head")
|
||||
}
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче