Мы знаем, что Lua имеет библиотечную функцию debug.sethook
, когда любая функция возвращается,
функция ловушки вызывается с событием "возврат" или "возврат хвоста", но LuaJIT не обрабатывает "возврат хвоста".
Существуют ли какие-либо методы отключить специализацию LuaJIT, и позволить ему перехватить "возврат хвоста"?
Луахит не может зацепиться за хвост
comment
Возможно, это будет полезно
- person Egor Skriptunoff   schedule 02.07.2016
Ответы (1)
Это «особенность» реализации LuaJIT, поэтому вряд ли вы сможете ее отключить. Как предложил автор LuaJIT, вы можете отслеживать стек глубина в крючке, но вы не сможете специально отслеживать возврат хвостового вызова.
Обратите внимание, что Lua также перешел от хвостовых возвратов к хвостовым вызовам: " Для событий вызова событие может быть LUA_HOOKCALL, нормальное значение, или LUA_HOOKTAILCALL, для хвостового вызова; в этом случае не будет соответствующего события возврата ».
person
Paul Kulchenko
schedule
02.07.2016