• Simon Zünd's avatar
    Store JSMessageObject on rejected promises · b15c02d0
    Simon Zünd authored
    When V8 throws an uncaught exception, we store a JSMessageObject
    with a stack trace and source positions on the isolate itself.
    The JSMessageObject can be retrieved by a TryCatch scope
    and is used by the inspector to provide additional information to the DevTools
    frontend (besides the exception).
    
    Introducing top-level await for REPL mode causes all thrown exceptions
    to be turned into a rejected promise. The implicit catch block that does this
    conversion clears the JSMessageObject from the isolate as to not leak memory.
    
    This CL preserves the JSMessageObject when the debugger is active and stores
    the JSMessageObject on the rejected promise itself. The inspector is changed
    to retrieve the JSMessageObject in the existing catch handler and pass the
    information along to the frontend.
    
    Drive-by: This CL removes a inspector test that made assumptions when a promise
    is cleaned up by the GC. These assumptions no longer hold since we hold on to
    the promise longer.
    
    Bug: chromium:1021921
    Change-Id: Id0380e2cf3bd79aca05191bc4f3c616f6ced8db7
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1967375
    Commit-Queue: Simon Zünd <szuend@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#65497}
    b15c02d0
Name
Last commit
Last update
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...