v8/test/cctest/interpreter
Simon Zünd c0682832f0 [debug] Add new 'CreateMessageFromException' function
CDP has a "ExceptionDetails" structure that is attached to various
CDP commands, e.g. "Runtime#exceptionThrown" or "Runtime#evaluate".
The stack trace in the "ExceptionDetails" structure is used in
various places in DevTools. The information in the "ExceptionDetails"
structure is extracted from a v8::Message object. Message objects
are normally created at the exception throw site and may augment
the error with manually inspecting the stack (both to capture a fresh
stack trace in some cases, as well as to calculate location info).

The problem is that in some cases we want to get an "ExceptionDetails"
structure after the fact, e.g. when logging a JS "Error" object in
a catch block. This means we can't reuse Isolate::CreateMessage as
the JS stack at call time is unrelated to the time when an Error
object was thrown.

To re-use some of the code, this CL introduces a new
"CreateMessageFromException" method that is only available from the
debugging interface (not public V8 API!). The new method works
similar to Isolate::CreateMessage, but:
  1) Does not look at the current JS stack, neither for a fresh
     stack trace nor for location information.
  2) Only uses the "detailed" stack trace for location info.
     This is because the "simple" stack trace could have already
     been serialized by accessing Error#stack.

Bug: chromium:1278650
Doc: https://bit.ly/runtime-get-exception-details
Change-Id: I0144516001c71786b9f76ae4dec4442fa1468c5b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3337257
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/main@{#78586}
2022-01-12 12:49:53 +00:00
..
bytecode_expectations [debug] Add new 'CreateMessageFromException' function 2022-01-12 12:49:53 +00:00
bytecode-expectations-printer.cc [ignition] Remove unused count from param index getters 2021-12-16 15:43:22 +00:00
bytecode-expectations-printer.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
generate-bytecode-expectations.cc Reland "[top-level-await] Remove --harmony-top-level-await" 2021-12-06 23:02:33 +00:00
interpreter-tester.cc [runtime] Move string table off-heap 2020-08-06 12:27:18 +00:00
interpreter-tester.h [ext-code-space][cleanup] Remove CodeDataContainer table 2021-12-16 17:32:39 +00:00
source-position-matcher.cc Fix most instances of -Wunreachable-code-aggressive. 2021-07-01 03:03:25 +00:00
source-position-matcher.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-bytecode-generator.cc Reland "[top-level-await] Remove --harmony-top-level-await" 2021-12-06 23:02:33 +00:00
test-interpreter-intrinsics.cc [interpreter] Remove %_Call 2021-06-17 15:16:41 +00:00
test-interpreter.cc [ext-code-space][cleanup] Remove CodeDataContainer table 2021-12-16 17:32:39 +00:00
test-source-positions.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00