• Joyee Cheung's avatar
    [class] fix undefined private name access in computed property keys · 7fa12e2a
    Joyee Cheung authored
    This patch implements https://github.com/tc39/proposal-class-fields/pull/269
    and makes sure we always throw TypeError when there is invalid private
    name access in computed property keys.
    
    Before this patch, private name variables of private fields and methods
    are initialized together with computed property keys in the order they
    are declared. Accessing undefined private names in the computed property
    keys thus fail silently.
    
    After this patch, we initialize the private name variables of private
    fields before we initialize the computed property keys, so that invalid
    access to private fields in the computed keys can be checked in the IC.
    We now also initialize the brand early, so that invalid access to private
    methods or accessors in the computed keys throw TypeError during brand
    checks - and since these accesses are guarded by brand checks, we can
    create the private methods and accessors after the class is
    defined, and merge the home object setting with the creation
    of the closures.
    
    Bug: v8:8330, v8:9611
    Change-Id: I01363f7befac6cf9dd28ec229b99a99102bcf012
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1846571
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
    Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#64225}
    7fa12e2a
Name
Last commit
Last update
benchmarks 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...
ChangeLog 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...