[class] parse private accessors

This patch adds:

- VariableMode::kPrivateMethod
- VariableMode::kPrivateSetterOnly
- VariableMode::kPrivateGetterOnly
- VariableMode::kPrivateGetterAndSetter

And replace the previous RequiresBrandCheckFlag by inferring
whether the brand check is required from these VariableModes.
It is then possible to check duplicate non-complementary
accessors in the parsers and throw early errors, and allow
complementary accessors to be associated with the same
private name variable.

This patch also adds the following AssignType:

- PRIVATE_METHOD
- PRIVATE_GETTER_ONLY
- PRIVATE_SETTER_ONLY
- PRIVATE_GETTER_AND_SETTER

corresponding to the new VariableModes so that it's possible
to generate specialized code for different type of
private accessor declarations.

Design doc: https://docs.google.com/document/d/10W4begYfs7lmldSqBoQBBt_BKamgT8igqxF9u50RGrI/edit

Bug: v8:8330
Change-Id: I0fb61b1be248630d1eadd74fb16d7d64a421f4c4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695204
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62988}
22 files changed
tree: 812514cabe781f4ad0bd475e394d965007dcfa73
  1. .clang-format
  2. .clang-tidy
  3. .editorconfig
  4. .flake8
  5. .git-blame-ignore-revs
  6. .gitattributes
  7. .gitignore
  8. .gn
  9. .vpython
  10. .ycm_extra_conf.py
  11. AUTHORS
  12. BUILD.gn
  13. CODE_OF_CONDUCT.md
  14. COMMON_OWNERS
  15. ChangeLog
  16. DEPS
  17. ENG_REVIEW_OWNERS
  18. INFRA_OWNERS
  19. INTL_OWNERS
  20. LICENSE
  21. LICENSE.fdlibm
  22. LICENSE.strongtalk
  23. LICENSE.v8
  24. LICENSE.valgrind
  25. MIPS_OWNERS
  26. OWNERS
  27. PPC_OWNERS
  28. PRESUBMIT.py
  29. README.md
  30. S390_OWNERS
  31. WATCHLISTS
  32. benchmarks/
  33. build_overrides/
  34. codereview.settings
  35. custom_deps/
  36. docs/
  37. gni/
  38. include/
  39. infra/
  40. samples/
  41. src/
  42. test/
  43. testing/
  44. third_party/
  45. tools/
README.md

V8 JavaScript Engine

V8 is Google's open source JavaScript engine.

V8 implements ECMAScript as specified in ECMA-262.

V8 is written in C++ and is used in Google Chrome, the open source browser from Google.

V8 can run standalone, or can be embedded into any C++ application.

V8 Project page: https://v8.dev/docs

Getting the Code

Checkout depot tools, and run

    fetch v8

This will checkout V8 into the directory v8 and fetch all of its dependencies. To stay up to date, run

    git pull origin
    gclient sync

For fetching all branches, add the following into your remote configuration in .git/config:

    fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
    fetch = +refs/tags/*:refs/tags/*

Contributing

Please follow the instructions mentioned at v8.dev/docs/contribute.