Post Thumbnail

Это почти техническое руководство по реализации JIT-компиляции в Go с акцентом на вызов Go-функций из динамически сгенерированного кода.

Автор объясняет фундаментальную проблему, связанную с двумя ABI и строгими требованиями к стеку из-за сборщика мусора. Наивная JIT-реализация не будет работать стабильно.

Мы пройдемся по трем этапам реализации. Начнме с базового JIT, изменяющнго переменную. Потом будет ошибочная попытка прямого вызова Go-функции, приводящая к краху при сборке мусора. И, наконец, корректное решение с использованием ассемблерной прослойки и специальной метки gocall, которая обманывает рантайм, заставляя его считать JIT-вызов легитимным.

Этот подход лёг в основу форка gojit, который уже применяется в эмуляторе guac

Похожее

Post Thumbnail

Лайв Релоадинг

В статье автор рассказывает как реализовать автоматическую перезагрузки для стат...