[class] exclude brand symbols in JSReceiver::GetPrivateEntries

This patch excludes brand symbols from the result of
JSReceiver::GetPrivateEntries so that the brands do not show up
when the instances are inspected from the DevTools (e.g. via
`Runtime.getProperties()`).

To implement this, we use a bit in the Symbols to denote whether
it's a brand symbol. A brand symbol is also a private name
symbol so that we can just reuse the IC for accessing private
names and do not need to jump through extra ORs.

Design doc: https://docs.google.com/document/d/1N91LObhQexnB0eE7EvGe57HsvNMFX16CaWu-XCTnnmY/edit

Bug: v8:8671, v8:9839, v8:8330
Change-Id: I24346aeedce3602395289052d1e1350ae9390354
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1909757
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/master@{#64899}
13 files changed
tree: 6c4974e27bb86c627fd61df67ef42cf70b0e1336
  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. build_overrides/
  33. codereview.settings
  34. custom_deps/
  35. docs/
  36. gni/
  37. include/
  38. infra/
  39. samples/
  40. src/
  41. test/
  42. testing/
  43. third_party/
  44. 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.