我们知道Lua有一个库函数debug.sethook,当任何函数返回时,
钩子函数通过事件"return“或"tail return”调用,但LuaJIT不钩子"tail return“。
有没有什么方法可以关闭LuaJIT的特殊化,让它钩住“尾部返回”?
发布于 2016-07-02 23:53:46
这是LuaJIT实现的一个“特性”,因此您不太可能将其关闭。作为LuaJIT suggested的作者,您可以跟踪钩子中的堆栈深度,但不能专门跟踪尾部调用的返回。
注意,Lua也从tail returns移到了tail calls:“对于调用事件,event可以是LUA_HOOKCALL,对于尾部调用,event可以是正常值,也可以是LUA_HOOKTAILCALL;在这种情况下,将没有相应的返回事件。”
https://stackoverflow.com/questions/38158473
复制相似问题