the name is inaccurate (the profile graph doesn't have to be a tree due to possible mutual recursion, so the word depth is misleading)
simple recursive function calls are merged for the purpose of this flag, but mutually recursive function calls are not:
call stack [f, f, f, x, y, z] is merged to [f, x, y, z]. With the flag set to 3 the stack will be cut to [f, x, y] and the user will see a graph like this f -> x -> z
call stack [a, b, a, b, c, d] is not merged. With the flag set to 3 the stack will be cut to [a, b, a] and the user will see a graph like this
a -> b-|
^------|
without the c function
a user has no option to disable merging of recursive functions (prob not in the graph/UI itself, just for the purpose of the depth flag) and (?) loop functions (this one is probably fine as loop functions should always be merged, but we can make a separate option for that) - probably another flag could be added
This flag currently has a few issues:
depth
is misleading)[f, f, f, x, y, z]
is merged to[f, x, y, z]
. With the flag set to 3 the stack will be cut to[f, x, y]
and the user will see a graph like thisf -> x -> z
[a, b, a, b, c, d]
is not merged. With the flag set to 3 the stack will be cut to[a, b, a]
and the user will see a graph like thiswithout the
c
functionA design doc should be written.