Луахит не может зацепиться за хвост

Мы знаем, что Lua имеет библиотечную функцию debug.sethook, когда любая функция возвращается,
функция ловушки вызывается с событием "возврат" или "возврат хвоста", но LuaJIT не обрабатывает "возврат хвоста".
Существуют ли какие-либо методы отключить специализацию LuaJIT, и позволить ему перехватить "возврат хвоста"?


person Joey.Luo    schedule 02.07.2016    source источник
comment
Возможно, это будет полезно   -  person Egor Skriptunoff    schedule 02.07.2016


Ответы (1)


Это «особенность» реализации LuaJIT, поэтому вряд ли вы сможете ее отключить. Как предложил автор LuaJIT, вы можете отслеживать стек глубина в крючке, но вы не сможете специально отслеживать возврат хвостового вызова.

Обратите внимание, что Lua также перешел от хвостовых возвратов к хвостовым вызовам: " Для событий вызова событие может быть LUA_HOOKCALL, нормальное значение, или LUA_HOOKTAILCALL, для хвостового вызова; в этом случае не будет соответствующего события возврата ».

person Paul Kulchenko    schedule 02.07.2016