• Predrag Rudic's avatar
    MIPS[64]: Port: [async] Introduce dedicated JSAsyncFunctionObject. · 44142530
    Predrag Rudic authored
    Port commit a63987a4
    
    Original message:
    >This JSAsyncFunctionObject represents the implicit generator object
    >inside of async functions, and also holds the outer promise for the
    >async functions. This in turn allows us to get rid of the .promise
    >in the Parser / BytecodeGenerator completely, and will make it
    >possible to build zero-cost async stack traces independent of the
    >concrete synchronous part of the stack frame (which currently breaks
    >in Node.js).
    >
    >In the bytecode all the async function operations now take this new
    >JSAsyncFunctionObject instead of passing both the .generator_object
    >and the .promise, which further simplifies and shrinks the bytecode.
    >It also reduces the size of async function frames, potentially making
    >the suspend/resume cheaper.
    >
    >This also changes `await` to use intrinsics instead of calling to
    >special JSFunctions on the native context, and thus reduces the size of
    >the native contexts.
    >
    >Drive-by-fix: Introduce a dedicated JSCreateAsyncFunctionObject operator
    >to TurboFan.
    >
    >Bug: v8:7253, v8:7522
    >Change-Id: I2305302285156aa1f71328ecac70377abdd92c80
    >Ref: nodejs/node#11865
    >Design-Document: http://bit.ly/v8-zero-cost-async-stack-traces
    >Reviewed-on: https://chromium-review.googlesource.com/c/1273049
    >Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    >Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
    >Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
    >Reviewed-by: Maya Lekova <mslekova@chromium.org>
    >Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
    >Cr-Commit-Position: refs/heads/master@{#56554}
    
    Change-Id: I5a11bd31bf2aac2e2b94779fa03b85ee88d7dbc4
    Reviewed-on: https://chromium-review.googlesource.com/c/1288811Reviewed-by: 's avatarIvica Bogosavljevic <ibogosavljevic@wavecomp.com>
    Commit-Queue: Ivica Bogosavljevic <ibogosavljevic@wavecomp.com>
    Cr-Commit-Position: refs/heads/master@{#56818}
    44142530
macro-assembler-mips.cc 170 KB