v8/test/cctest
Benedikt Meurer 9f28c129a0 [async] Introduce the notion of a "current microtask".
Change the way we start collecting async stack traces by storing the
current microtask as a root instead of trying to make sense of the
last frame we see. This makes it possible to use the zero cost async
stack traces in Node.js as well (where the last JavaScript frame we
see is not the actual async function, but some frame related to the
main event loop usually).

In addition to the benefit that it now works with Node.js, we can also
extend the new machinery to look through (almost arbitrary) promise
chains. For example this code snippet

```js
(async function() {
  await Promise.resolve().then(() =>
    console.log(new Error().stack));
})();
```

can be made to also show the async function frame, even though at the
point where the stack trace is collected we don't have any async
function on the stack. But instead there's a PromiseReactionJobTask
as "current microtask", and we can dig into the chained promise to
see where the async execution is going to continue and eventually
find the await promise in the chain.

This also removes the removes the need to allocate `.generator_object`
specially during scope resolution.

Bug: v8:7522
Ref: nodejs/node#11865
Tbr: ulan@chromium.org
Design-Document: bit.ly/v8-zero-cost-async-stack-traces
Change-Id: Ib96cb17c2f75cce083a24e5ba2bbb7914e20d203
Reviewed-on: https://chromium-review.googlesource.com/c/1277505
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56590}
2018-10-12 08:42:53 +00:00
..
compiler [turbofan] Introduce experimental --concurrent-inlining flag. 2018-10-11 10:38:17 +00:00
heap [heap] Externalize mark bitmap. 2018-10-11 15:03:40 +00:00
interpreter [async] Introduce the notion of a "current microtask". 2018-10-12 08:42:53 +00:00
libplatform [tracing] Custom tag for the traceEvents array 2018-05-07 16:54:59 +00:00
libsampler [cleanup] Refactor general tests to use default members. 2018-09-14 14:40:47 +00:00
parsing [parser] Remove FLAG_preparser_scope_analysis and friends 2018-10-09 09:31:03 +00:00
torque [torque] Allow atomarStatements in otherwise statements 2018-10-08 15:05:51 +00:00
wasm [wasm] Cache import wrappers in NativeModule 2018-10-10 13:03:32 +00:00
assembler-helper-arm.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
assembler-helper-arm.h Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
BUILD.gn [js weak refs] Add cctests 2018-10-11 13:42:08 +00:00
cctest.cc [heap] Remove marking finalization flag 2018-09-19 09:08:35 +00:00
cctest.h [api][cleanup] Mark Call*OnForegroundThread as V8_DEPRECATE_SOON 2018-10-05 08:38:09 +00:00
cctest.status [test] Skip flaky cctest OutOfMemorySmallObjects 2018-10-11 15:57:57 +00:00
DEPS [torque]: Add the ability to test Torque functionality with cctest 2018-05-13 10:58:56 +00:00
expression-type-collector-macros.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
gay-fixed.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-fixed.h
gay-precision.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-precision.h
gay-shortest.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-shortest.h
log-eq-of-logging-and-traversal.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
OWNERS Update MIPS file ownership to @wavecomp.com e-mail addresses 2018-07-26 16:28:10 +00:00
print-extension.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
print-extension.h [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
profiler-extension.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
profiler-extension.h [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
scope-test-helper.h [Parser] Split building logic out of ProducedPreParserScopeData. 2018-09-07 11:39:58 +00:00
setup-isolate-for-tests.cc [interpreter] Always put bytecode handlers in builtins table 2018-09-20 09:58:15 +00:00
setup-isolate-for-tests.h [interpreter] Always put bytecode handlers in builtins table 2018-09-20 09:58:15 +00:00
test-access-checks.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-accessor-assembler.cc [in-place weak refs] Replace WeakCells in StubCache. 2018-05-23 14:53:26 +00:00
test-accessors.cc [cleanup] Replace 0 and NULL with nullptr for test files. 2018-09-14 12:56:00 +00:00
test-allocation.cc Clean up VirtualMemory allocation 2018-09-17 10:16:38 +00:00
test-api-accessors.cc [cleanup] Replace 0 and NULL with nullptr for test files. 2018-09-14 12:56:00 +00:00
test-api-interceptors.cc [deprecation] Deprecate ToBoolean(Local<Context>) 2018-09-24 12:02:09 +00:00
test-api.cc Allow instance call handler to be called as constructor 2018-10-11 16:21:53 +00:00
test-api.h Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-array-list.cc [explicit isolates] Remove GetIsolate from objects.cc 2018-07-13 12:42:14 +00:00
test-assembler-arm64.cc Fix compilation issue on native arm64 build. 2018-09-06 17:33:30 +00:00
test-assembler-arm.cc [arm] Eliminate old form of core-scalar vmov instructions. 2018-07-24 17:39:24 +00:00
test-assembler-ia32.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-mips64.cc [mips] Port [turbofan] Implement constant folding of string concatenations 2018-09-20 15:15:12 +00:00
test-assembler-mips.cc MIPS[64] Optimize trampoline and long branches. 2018-08-13 11:31:36 +00:00
test-assembler-ppc.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-s390.cc s390: Corrections to brxh / brxhg cctests in test-assembler-s390.cc 2018-07-30 20:40:21 +00:00
test-assembler-x64.cc [cleanup] Replace old c-style casts with c++ casts. 2018-09-13 14:48:25 +00:00
test-atomicops.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bignum-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-bignum.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bit-vector.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-circular-queue.cc [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
test-code-layout.cc [ubsan] Change Address typedef to uintptr_t 2018-04-14 01:25:28 +00:00
test-code-stub-assembler.cc Refactor integer hashing function names 2018-09-20 11:43:13 +00:00
test-code-stubs-arm64.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-arm.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-ia32.cc [ia32,root] Use root register config in tests 2018-10-02 15:53:03 +00:00
test-code-stubs-mips64.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-mips.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-code-stubs.cc [ubsan] Fix many static_cast<int32_t> with undefined behavior 2018-04-17 02:02:18 +00:00
test-code-stubs.h [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-compiler.cc Remove always-true --harmony-function-tostring runtime flag 2018-10-03 15:04:16 +00:00
test-constantpool.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-conversions.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-cpu-profiler.cc [cpu-profiler] Use instruction start as the key for the CodeMap 2018-07-27 09:53:00 +00:00
test-date.cc [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
test-debug.cc inspector: mark all pauses on promise rejection with proper reason 2018-09-28 15:53:34 +00:00
test-decls.cc [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
test-deoptimization.cc [deprecation] Deprecate ToBoolean(Local<Context>) 2018-09-24 12:02:09 +00:00
test-dictionary.cc [ReadOnlyRoots] Make empty_property_dictionary a RO root 2018-10-09 15:15:50 +00:00
test-disasm-arm64.cc [cctest][arm64] Fix debug disassembler test with no simulator. 2018-08-16 08:38:57 +00:00
test-disasm-arm.cc [arm] Implement I64Atomic operations on Arm 2018-08-25 09:59:17 +00:00
test-disasm-ia32.cc [turbofan] Further optimize DataView accesses. 2018-08-14 09:20:47 +00:00
test-disasm-mips64.cc [mips64] Deprecate use of J and JAL instructions 2018-09-13 09:39:21 +00:00
test-disasm-mips.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-ppc.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-s390.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-x64.cc Reland^2 "[Liftoff] Implement f32.copysign and f64.copysign" 2018-09-12 08:33:24 +00:00
test-diy-fp.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-double.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-elements-kind.cc Reland: [iwyu] Remove sfi-inl.h -> wasm include 2018-07-25 14:54:37 +00:00
test-experimental-extra.js
test-extra.js [turbofan] Properly optimize calls to promise extras. 2018-02-16 19:46:30 +00:00
test-fast-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-feedback-vector.cc [Interpreter] Create and use CallNoFeedback bytecode for one-shot code 2018-09-17 11:28:25 +00:00
test-feedback-vector.h [objects] Merge SFI outer_scope_info and feedback_metadata 2018-04-06 15:06:04 +00:00
test-field-type-tracking.cc Reland "Create a fast path to get migration target when updating map" 2018-10-12 08:21:13 +00:00
test-fixed-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-flags.cc [GetIsolate] Remove GetIsolate use in Map 2018-06-25 11:38:37 +00:00
test-func-name-inference.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-fuzz-arm64.cc [cleanup] Unify naming of instruction size constant 2018-08-07 12:18:13 +00:00
test-global-handles.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-global-object.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashcode.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashmap.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-heap-profiler.cc [heap profiler] Refactor: Replace indices with HeapEntry* 2018-10-04 14:15:23 +00:00
test-identity-map.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-inobject-slack-tracking.cc Remove always-true --harmony-bigint runtime flag 2018-10-01 11:31:13 +00:00
test-inspector.cc [cleanup] Refactor inspector to use default members. 2018-09-18 09:13:59 +00:00
test-intl.cc [Intl] Clean up SupportedLocalesOf and GetAvailableLocales 2018-10-08 19:45:31 +00:00
test-isolate-independent-builtins.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-javascript-arm64.cc [deprecation] Deprecate ToBoolean(Local<Context>) 2018-09-24 12:02:09 +00:00
test-js-arm64-variables.cc [jumbo] arm64 cctest fixes 2017-09-30 17:17:23 +00:00
test-js-weak-refs.cc [js weak refs] Add cctests 2018-10-11 13:42:08 +00:00
test-liveedit.cc [cleanup] Replace calls to deprecated String::Concat and ToInt32 from tests. 2018-07-24 17:30:14 +00:00
test-lockers.cc [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
test-log-stack-tracer.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-log.cc Revert "[turbofan] Do not consume SignedSmall feedback in TurboFan anymore." 2018-10-07 10:19:01 +00:00
test-macro-assembler-arm.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-macro-assembler-mips64.cc [cleanup] Move enum Heap::RootListIndex to enum class RootIndex 2018-09-20 11:16:05 +00:00
test-macro-assembler-mips.cc [cleanup] Move enum Heap::RootListIndex to enum class RootIndex 2018-09-20 11:16:05 +00:00
test-macro-assembler-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-managed.cc Add size estimate to Managed<T> 2018-05-30 10:26:21 +00:00
test-mementos.cc [heap] Remove support for aborting incremental marking 2018-09-17 10:44:52 +00:00
test-modules.cc [api,modules] Allow GetModuleNamespace on unevaluated modules. 2018-01-08 09:01:25 +00:00
test-object.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-orderedhashtable.cc [GetIsolate] Remove (most) GetIsolate from src/objects-debug.cc 2018-06-21 16:34:27 +00:00
test-parsing.cc [parser] Move GetUnexpectedTokenMessage to Parser with dummy preparser impl 2018-10-11 15:37:44 +00:00
test-platform.cc s390: Edited Generate_CEntry to correctly return buffer when built with clang 2018-09-05 07:01:16 +00:00
test-poison-disasm-arm.cc [test] Add type confusion poisoning test for polymorhic access. 2018-10-10 17:57:57 +00:00
test-profile-generator.cc [cpu-profiler] Use instruction start as the key for the CodeMap 2018-07-27 09:53:00 +00:00
test-random-number-generator.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-regexp.cc parsing: Lock ExternalStrings in the ExternalStringStream. 2018-09-04 14:09:04 +00:00
test-representation.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-roots.cc [async] Introduce the notion of a "current microtask". 2018-10-12 08:42:53 +00:00
test-sampler-api.cc [cleanup] Refactor general tests to use default members. 2018-09-14 14:40:47 +00:00
test-serialize.cc Reland "[snapshot] add checksum to startup snapshot" 2018-09-25 19:18:23 +00:00
test-smi-lexicographic-compare.cc [array] Use CallCFunction3 for SmiLexicographicCompare 2018-09-05 10:13:25 +00:00
test-strings.cc Move MessageTemplate enum into its own header file 2018-10-11 23:01:32 +00:00
test-strtod.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-symbols.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-sync-primitives-arm64.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-sync-primitives-arm.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-thread-termination.cc [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
test-threads.cc [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
test-trace-event.cc [deprecation] Deprecate ToBoolean(Local<Context>) 2018-09-24 12:02:09 +00:00
test-traced-value.cc Avoid octal escape sequences 2017-12-01 15:08:14 +00:00
test-transitions.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-transitions.h [explicit isolates] Eliminate GetIsolate from transitions.cc 2018-06-05 11:00:43 +00:00
test-typedarrays.cc Remove always-true --harmony-bigint runtime flag 2018-10-01 11:31:13 +00:00
test-types.cc [turbofan] Put some tests under a canonical handle scope. 2018-07-31 18:20:53 +00:00
test-unbound-queue.cc
test-unboxed-doubles.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-unscopables-hidden-prototype.cc
test-usecounters.cc [Atomics] Add use counter for Atomics.{wake, notify} 2018-09-20 21:31:33 +00:00
test-utils-arm64.cc [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils-arm64.h [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-version.cc [build] Introduce an embedder version string 2017-10-05 07:17:45 +00:00
test-weakmaps.cc [heap] Remove support for aborting incremental marking 2018-09-17 10:44:52 +00:00
test-weaksets.cc [heap] Remove support for aborting incremental marking 2018-09-17 10:44:52 +00:00
testcfg.py [test] Add non-d8 test suites to Android testing 2018-09-11 11:12:21 +00:00
trace-extension.cc [ptr-compr] Support 31-bit Smis in lower half-word on 64-bit architectures. 2018-06-05 11:37:35 +00:00
trace-extension.h [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
types-fuzz.h [turbofan] Prepare broker for serialization. 2018-07-23 17:20:49 +00:00
unicode-helpers.cc [Parser] Add support for Zone allocated ConsumedPreParsingScopeData. 2018-09-07 10:28:40 +00:00
unicode-helpers.h [Parser] Add support for Zone allocated ConsumedPreParsingScopeData. 2018-09-07 10:28:40 +00:00