(notonline)-->
without js -- file i/o, etc...
constant func_log = new_dict(),
func_freq = new_dict()
global procedure log_function_call(integer rtnNo)
integer node = getd_index(rtnNo,func_log)
setd(rtnNo,iff(node=NULL?1:getd_by_index(node,func_log)+1),func_log)
end procedure
include p.exw -- the phix compiler, full source
-- invert the dictionary, then print top ten
integer count = 0
function visitor(object key, integer data, integer user_data)
if user_data=1 then -- invert
setd({data,key},0,func_freq)
else
key[2] = symtab[key[2]][S_Name]
?key
count += 1
if count>10 then return 0 end if -- cease traversal
end if
return 1
end function
rebuild_callback() -- (convert ternary tree indexes to readable names)
traverse_dict(visitor,1,func_log) -- invert
traverse_dict(visitor,2,func_freq,rev:=true) -- top 10