• Shu-yu Guo's avatar
    Set is_awaiting on async generators after await's Promise machinery · 8efed0f9
    Shu-yu Guo authored
    The is_awaiting bit on async generators distinguishes waiting on an
    await. When the async generator resumes from an await, the is_awaiting
    bit is cleared.
    
    It is possible through overriding Promise#constructor that `await`
    throws *after* setting is_awaiting. There is an implicit try-catch
    around the body of the async generator such that, usually, caught
    exceptions would clear the is_awaiting bit. However, the exception
    thrown from a monkeypatched Promise#constructor can be caught by script,
    and thus never clear the is_awaiting bit.
    
    This CL sets the is_awaiting bit *after* `await` completes, with the
    exception of the return resumption. It is not possible to have the
    exception thrown by the await in the return resumption be caught by
    script.
    
    Bug: chromium:1171667
    Change-Id: I0b615617a5c949f03350ab0f06c42920d43b5488
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2659508Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Shu-yu Guo <syg@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#72593}
    8efed0f9
Name
Last commit
Last update
.github Loading commit data...
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...
DIR_METADATA 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...
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...