v8/test
Alexey Kozyatinskiy ed9b2072a6 [inspector] reworked async instrumentation for promises
Old instrumentation was designed to collect promise creation stack and
promise scheduled stack together. In DevTools for last 6 months we
show only creation stack for promises. We got strong support from users
for new model. Now we can drop support for scheduled stacks and
simplify implementation.

New promise instrumentation is straightforward:
- we send kDebugPromiseThen when promise is created by .then call,
- we send kDebugPromiseCatch when promise is created by .catch call,
- we send kDebugWillHandle before chained callback and kDebugDidHandle
  after chained callback,
- and we send separate kDebugAsyncFunctionPromiseCreated for internal
  promise inside async await function.

Advantages:
- we reduce amount of captured stacks (we do not capture stack for
  promise that constructed not by .then or .catch),
- we can consider async task related to .then and .catch as one shot
  since chained callback is executed once,
- on V8 side we can implement required instrumentation using only
  promise hooks,

Disadvantage:
- see await-promise test, sometimes scheduled stack was useful since we
  add catch handler in native code,

Implementation details:
- on kInit promise hook we need to figure out why promise was created.
  We analyze builtin functions until first user defined function on
  current stack. If there is kAsyncFunctionPromiseCreate function then
  we send kDebugAsyncFunctionPromiseCreated event. If there is
  kPromiseThen or kPromiseCatch then only if this function is bottom
  builtin function we send corresponded event to inspector. We need it
  because Promise.all internally calls .then and in this case we have
  Promise.all and Promise.then on stack at the same time and we do not
  need to report this internally created promise to inspector.

Bug: chromium:778796
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I53f47ce8c5c4a9897655c3396c249ea59529ae47
Reviewed-on: https://chromium-review.googlesource.com/765208
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49553}
2017-11-21 16:56:00 +00:00
..
benchmarks [test] Refactor getting test outcomes from statusfile. 2017-11-21 15:00:24 +00:00
cctest [Memory] Rewrite platform OS Commit / Uncommit in terms of permissions. 2017-11-21 16:48:55 +00:00
common [wasm] Use activations of the interpreter in the fuzzers 2017-11-21 14:49:55 +00:00
debugger Remove env field from testcase. 2017-11-16 15:26:06 +00:00
fuzzer Remove always-on flags for RegExp dotAll and lookbehind 2017-11-17 16:47:19 +00:00
inspector [inspector] reworked async instrumentation for promises 2017-11-21 16:56:00 +00:00
intl Remove env field from testcase. 2017-11-16 15:26:06 +00:00
js-perf-test [js-perf-test] Add Collection constructor and double type microbenchmarks 2017-11-16 07:21:05 +00:00
memory [snapshot] add tracking for builtin snapshot size. 2017-08-31 07:29:31 +00:00
message Remove env field from testcase. 2017-11-16 15:26:06 +00:00
mjsunit [test] Reenable test for "future" that no longer fails. 2017-11-21 14:30:35 +00:00
mkgrokdump Remove shell info from testcase. 2017-11-16 15:42:26 +00:00
mozilla [test] Common statusfile flag format for mozilla and test262. 2017-11-20 14:20:24 +00:00
preparser Remove shell info from testcase. 2017-11-16 15:42:26 +00:00
promises-aplus Remove env field from testcase. 2017-11-16 15:26:06 +00:00
test262 [test] Refactor getting test outcomes from statusfile. 2017-11-21 15:00:24 +00:00
unittests Decouple SourcePositionTableBuilder from Zone 2017-11-21 12:56:13 +00:00
wasm-spec-tests Remove env field from testcase. 2017-11-16 15:26:06 +00:00
webkit Remove env field from testcase. 2017-11-16 15:26:06 +00:00
bot_default.gyp [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
bot_default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
BUILD.gn [wasm] Remove the wasm-asmjs fuzzer 2017-06-21 10:59:35 +00:00
default.gyp [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
optimize_for_size.gyp
optimize_for_size.isolate
perf.gyp
perf.isolate Remove SIMD.js from V8. 2017-02-14 06:57:25 +00:00