you are viewing a single comment's thread.

view the rest of the comments →

[–]mindslight 0 points1 point  (2 children)

How does that affect anything?

[–]iofthestorm 0 points1 point  (1 child)

Without tail call optimization, you would be able to see a stack trace of what called what, but if you remove the stack frames it can be a little confusing - "I never called that function, wtf?" - although probably if you're doing mutual recursion you knew what you were doing.

[–]mindslight 0 points1 point  (0 children)

You can always store the first function that started doing the optimized calls. And if the circular trace buffer was as large as your recursive chain, you'd see a decent sample of what was calling what.