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
|
// blockFromAddr returns a block given an address somewhere in the heap (which
|
||||||
// might not be heap-aligned).
|
// might not be heap-aligned).
|
||||||
func blockFromAddr(addr uintptr) gcBlock {
|
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)
|
return gcBlock((addr - poolStart) / bytesPerBlock)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,6 +116,11 @@ func (b gcBlock) findHead() gcBlock {
|
||||||
for b.state() == blockStateTail {
|
for b.state() == blockStateTail {
|
||||||
b--
|
b--
|
||||||
}
|
}
|
||||||
|
if gcAsserts {
|
||||||
|
if b.state() != blockStateHead && b.state() != blockStateMark {
|
||||||
|
runtimePanic("gc: found tail without head")
|
||||||
|
}
|
||||||
|
}
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче