• mikhail.naganov@gmail.com's avatar
    Fix issue 553: function frame is skipped in profile when compare stub is called. · 999e3fca
    mikhail.naganov@gmail.com authored
    The problem appeared due to a fact that stubs doesn't create a stack
    frame, reusing the stack frame of the caller function. When building
    stack traces, the current function is retrieved from PC, and its
    callees are retrieved by traversing the stack backwards. Thus, for
    stubs, the stub itself was discovered via PC, and then stub's caller's
    caller was retrieved from stack.
    
    To fix this problem, a pointer to JSFunction object is now captured
    from the topmost stack frame, and is saved into stack trace log
    record. Then a simple heuristics is applied whether a referred
    function should be added to decoded stack, or not, to avoid reporting
    the same function twice (from PC and from the pointer.)
    
    BUG=553
    TEST=added to mjsunit/tools/tickprocessor
    
    Review URL: http://codereview.chromium.org/546089
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    999e3fca
mark-compact.h 17 KB