Consider the following script:
============= test-profileanfunc.vim =============
let s:d={}
function Test()
    function s:d.f()
        " s:d.f
    endfunction
    let d={}
    function d.f()
        " d.f
    endfunction
    call s:d.f()
    call d.f()
endfunction
profile start anfunc.profile
profile func *
call Test()
profile pause
qa!
==================================================
Here is the output after launching
    vim -u NONE -S test-profileanfunc.vim
:
================= anfunc.profile =================
FUNCTION  1()
Called 1 time
Total time:   0.000004
 Self time:   0.000004

count  total (s)   self (s)
                                    " s:d.f

FUNCTION  Test()
Called 1 time
Total time:   0.000095
 Self time:   0.000088

count  total (s)   self (s)
    1              0.000011     function s:d.f()
                                    " s:d.f
                                endfunction
    1              0.000008     let d={}
    1              0.000004     function d.f()
                                    " d.f
                                endfunction
    1   0.000033   0.000029     call s:d.f()
    1   0.000016   0.000013     call d.f()

FUNCTIONS SORTED ON TOTAL TIME
count  total (s)   self (s)  function
    1   0.000095   0.000088  Test()
    1   0.000004             1()

FUNCTIONS SORTED ON SELF TIME
count  total (s)   self (s)  function
    1   0.000095   0.000088  Test()
    1              0.000004  1()

==================================================
You see, it normally profiles s:d.f, but fails to do this for d.f. I actually 
encountered the opposite issue, but failed to reproduce it with a simple 
script, 
so filing this. Tested on vim-7.3.75 from Gentoo repos and on vim-7.3.89 
(revision 28398206597f, --with-features=huge).

Attachment: signature.asc
Description: This is a digitally signed message part.

Raspunde prin e-mail lui