• Georgia Kouveli's avatar
    [arm64] Port the skipping of arguments adaptor frames. · cc5808cd
    Georgia Kouveli authored
    This is a port of the improvements to the ArgumentsAdaptorTrampoline
    that previously landed for x64. It skips the arguments adaptor frame
    creation if the callee cannot observe the actual arguments (as indicated
    by the "is_safe_to_skip_arguments_adaptor" bit on the SharedFunctionInfo),
    and instead just massages the current stack frame appropriately (either
    by pushing more undefineds in case of under application, or by removing
    the superfluous arguments in case of over application).
    
    Due to the 16 byte stack alignment requirement on arm64, we only skip
    the arguments adaptor frame creation when the difference between the
    expected and the actual argument number is even. When it is odd, we
    would still need to copy the actual arguments in the existing frame to
    account for the padding, which would defeat the point of the improvement.
    
    Bug: v8:8895
    Tbr: jgruber@chromium.org
    Doc: http://bit.ly/v8-faster-calls-with-arguments-mismatch
    Change-Id: I7f13f6f0ba86edb483e088aac145cfcf9c937fef
    Reviewed-on: https://chromium-review.googlesource.com/c/1491633
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#59983}
    cc5808cd
builtins-arm64.cc 141 KB