• Ross McIlroy's avatar
    [Interpreter] Adapt Call bytecode handlers to drop their stack-frame. · 51a15140
    Ross McIlroy authored
    This change adapts the Call bytecode handlers such that they don't require
    a stack frame. It does this by modifying the call bytecode handler to
    tail-call the Call or InterpreterPushArgsAndCall builtins. As a result, the
    callee function will return to the InterpreterEntryTrampoline when it returns
    (since this is the return address on the interpreter frame), which is
    adapted to dispatch to the next bytecode handler. The return bytecode
    handler is modified to tail-call a new InterpreterExitTramoline instead
    of returning to the InterpreterEntryTrampoline.
    
    Overall this significanlty reduces the amount of stack space required for
    interpreter frames, increasing the maximum depth of recursive calls from
    around 6000 to around 12,500 on x64.
    
    BUG=chromium:753705
    
    Change-Id: I23328e4cef878df3aca4db763b47d72a2cce664c
    Reviewed-on: https://chromium-review.googlesource.com/634364
    Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#47617}
    51a15140
builtins-x64.cc 105 KB