v8/test
Benedikt Meurer a63987a41a [async] Introduce dedicated JSAsyncFunctionObject.
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}
2018-10-11 09:22:58 +00:00
..
benchmarks [test] Share resource-fetching logic with all d8 test cases 2018-08-29 17:51:43 +00:00
cctest [async] Introduce dedicated JSAsyncFunctionObject. 2018-10-11 09:22:58 +00:00
common Fix Arm64 assembler on Android. 2018-09-18 09:43:05 +00:00
debugger [async] Improve async function handling. 2018-10-10 06:37:53 +00:00
fuzzer [multi-return-fuzzer] Fix clusterfuzz issue in test 2018-10-05 10:49:10 +00:00
inspector [wasm][test] Refactor breakpoint inspector test 2018-10-10 10:24:32 +00:00
intl [Intl] Fix intl/date-format/constructor-order 2018-10-08 23:28:00 +00:00
js-perf-test [js-perf-test] Add micro-benchmarks for spreading maps and sets. 2018-10-10 08:32:15 +00:00
memory [builtins] Add embedded stats to --serialization-statistics 2018-07-05 12:33:26 +00:00
message [modules] Implement new syntax: export * as foo from "..." 2018-10-11 07:08:33 +00:00
mjsunit [modules] Implement new syntax: export * as foo from "..." 2018-10-11 07:08:33 +00:00
mkgrokdump [cleanup] Cleanup IMMORTAL_IMMOVABLE_ROOT_LIST 2018-10-09 09:05:37 +00:00
mozilla [test] Add more test suites to Android testing 2018-09-07 09:53:15 +00:00
preparser [test] Share resource-fetching logic with all d8 test cases 2018-08-29 17:51:43 +00:00
test262 [modules] Implement new syntax: export * as foo from "..." 2018-10-11 07:08:33 +00:00
torque [torque] Allow atomarStatements in otherwise statements 2018-10-08 15:05:51 +00:00
unittests [ptr-compr] Introduce IsolateData class 2018-10-11 08:01:37 +00:00
wasm-spec-tests [wasm] Update spec tests 2018-09-25 08:36:32 +00:00
webkit Remove always-true --harmony-string-trimming runtime flag 2018-10-01 16:19:19 +00:00
BUILD.gn Reland "[test] Add logic to run tests on Android" 2018-08-10 17:56:12 +00:00