Что такое //go:nosplit?

Senior
168 просмотров
AFK Offer AI

//go:nosplit — директива компилятора, запрещающая вставку проверки стека (morestack) в пролог функции. Обычно каждая функция начинается с проверки "хватит ли стека", и если нет — вызывается morestack для роста. nosplit убирает эту проверку — функция должна уместиться в оставшийся стек. Используется в рантайме Go для функций, которые вызываются когда стек в нестабильном состоянии (во время самого morestack, или в signal handler). Опасно: если стека не хватит — stack overflow crash.

Следующий вопрос

Что такое CAS operation?