• Peter Marshall's avatar
    [cpu-profiler] Fix stack iterability for fast C calls with no exit frame · d5f4a33e
    Peter Marshall authored
    Before fast C calls, store the current FP and PC on the isolate. When
    iterating frames in SafeStackFrameIterator, check if these fields are
    set and start iterating at the calling frame's FP instead of the current
    FP, which will be in C++ code. We need to do this because c_entry_fp is
    not set on the Isolate for Fast-C-Calls because we don't build an exit
    frame.
    
    This change makes stack samples that occur within 'Fast-C-Calls'
    iterable, meaning we can properly attribute ticks within the JS caller.
    
    Fast-C-Calls can't call back into JS code, so we can only ever have one
    such call on the stack at a time, allowing us to store the FP on the
    isolate rather than the stack.
    
    TBR=v8-mips-ports@googlegroups.com
    
    Bug: v8:8464, v8:7202
    Change-Id: I7bf39eba779dad34754d5759d741c421b362a406
    Reviewed-on: https://chromium-review.googlesource.com/c/1340241
    Commit-Queue: Peter Marshall <petermarshall@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarMartyn Capewell <martyn.capewell@arm.com>
    Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#57896}
    d5f4a33e
macro-assembler-arm64.cc 114 KB