lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

    elseif what == 'tail return' then
      local now = clock()
      data[key] = data[key] + (now - table.remove(stack))

Is this a bug?  In Lua 5.2 at least, it looks like the 'what' value when reporting a tail call/return is 'tail call' not 'tail return'.

My understanding is that tail calls are a bit tricky to instrument -- because a 'tail call' is actually one event that's simultaneously both a call and a return.

I think that, when instrumenting for inclusive call time, ignoring tail call events entirely is actually a sensible policy.  Effectively, I think that's what your code is doing (as the 'tail return' case will never be hit).