I am having trouble to replicating your problem with mutual recursion. I get the expected result with this mutually recursive test. Can you give me an example that reports incorrectly?
(def foo (li)
(if li (do (sleep 0.25) (bar (cdr li)) (sleep 0.25))
(sleep 2)))
(def bar (li)
(if li (do (sleep 0.25) (foo (cdr li)) (sleep 0.25))
(sleep 1)))
(profile foo bar)
(foo '(a a a a a a a))
(profiler-report)
Hmm. I'll check again later. In the meantime, what I did in the great-grandparent post was just this, on a fresh start:
1. turn on profiling in wiki-arc/wiki-arc.arc, by setting the variable whose name escapes me at the moment to t
2. Load wiki-arc/wiki-arc.arc and (thread (asv)) the server.
3. Load a single test page, with various formatting, including '''a bolded text's attempt to ''confuse the parser''''', [[link]]s, [[sample link|links with different text]]s etc. etc.
4. (profiler-report)
I'll check later on it, and possibly also post the sample wikitext.