In order to keep track of what function is being executed at any given point in time, you have to know when a function has exited. A return or an unwind depending on whether it returned due to a return statement or because an exception was thrown and not caught. The idea is that every single time it executes the instruction, it needs to check, oh, did I change the line? And then if the answer is this, then it calls you. It's slow because the problem doesn't really understand what a line of code is. Pablo: "A line of code only makes sense like for you, the programmer"