• Pierre Langlois's avatar
    [ic] Do not decode instructions to detect deoptimized code. · 0d8ec36b
    Pierre Langlois authored
    This fixes a crash when using --trace-ic on Arm64 debug. For a given return
    address, the assembler's `target_address_from_return_address()` method will
    displace it to give you the call-site address. However, this is fragile because
    it needs to decode the instruction stream to distinguish between different call
    sequences. So it triggered an assertion on Arm64 because we now use BL for
    builtin to buitin calls.
    
    We only use this when tracing IC states to detect if the caller is a deoptimized
    function. But to do this it doesn't matter if the address we have is the return
    or the call-site address. So we can just remove the need for the fragile
    Assembler method.
    
    As a drive-by, also remove `return_address_from_call_start()` which was doing
    the opposite and was unused.
    
    Change-Id: I5988d17eadd1652ed85d662e62bc4c579665dd31
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1594566
    Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#61337}
    0d8ec36b
assembler-x64.h 83.5 KB