• Joyee Cheung's avatar
    Revert "[class] implement reparsing of class instance member initializers" · f668e9f7
    Joyee Cheung authored
    This reverts commit 91f08378.
    
    Reason for revert: It's a fairly big change, and the clusterfuzz
    found some bugs. Will reland with the fix after M98 branch point.
    
    Original change's description:
    > [class] implement reparsing of class instance member initializers
    >
    > Previously, since the source code for the synthetic class instance
    > member initializer function was recorded as the span from the first
    > initializer to the last initializer, there was no way to reparse the
    > class and recompile the initializer function. It was working for
    > most use cases because the code for the initializer function was
    > generated eagarly and it was usually alive as long as the class was
    > alive, so the initializer wouldn't normally be lazily parsed. This
    > didn't work, however, when the class was snapshotted with
    > v8::SnapshotCreator::FunctionCodeHandling::kClear,
    > becuase then we needed to recompile the initializer when the class
    > was instantiated. This patch implements the reparsing so that
    > these classes can work with FunctionCodeHandling::kClear.
    >
    > This patch refactors ParserBase::ParseClassLiteral() so that we can
    > reuse it for both parsing the class body normally and reparsing it
    > to collect initializers. When reparsing the synthetic initializer
    > function, we rewind the scanner to the beginning of the class, and
    > parse the class body to collect the initializers. During the
    > reparsing, field initializers are parsed with the full parser while
    > methods of the class are pre-parsed.
    >
    > A few notable changes:
    >
    > - Extended the source range of the initializer function to cover the
    >   entire class so that we can rewind the scanner to parse the class
    >   body to collect initializers (previously, it starts from the first
    >   field initializer and ends at the last initializer). This resulted
    >   some expectation changes in the debugger tests, though the
    >   initializers remain debuggable.
    > - A temporary ClassScope is created during reparsing. After the class
    >   is reparsed, we use the information from the ScopeInfo to update
    >   the allocated indices of the variables in the ClassScope.
    >
    > Bug: v8:10704
    > Change-Id: Ifb6431a1447d8844f2a548283d59158742fe9027
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2988830
    > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
    > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
    > Commit-Queue: Joyee Cheung <joyee@igalia.com>
    > Cr-Commit-Position: refs/heads/main@{#78299}
    
    Bug: v8:10704
    Change-Id: I039cb728ebf0ada438a8f26c7d2c2547dbe3bf2d
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3325328
    Auto-Submit: Joyee Cheung <joyee@igalia.com>
    Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
    Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78315}
    f668e9f7
Name
Last commit
Last update
.github Loading commit data...
bazel 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...
.bazelrc 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...
.mailmap Loading commit data...
.vpython Loading commit data...
.vpython3 Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.bazel 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...
LOONG_OWNERS 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...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
WORKSPACE Loading commit data...
codereview.settings Loading commit data...